1.软件开发的发展历程
从
计算机发明到现在,出现了多种软件开发方法,19世纪60年代的发生的软件危机促使了“软件工程”这个概念的诞生。但是目前软件开发的现状如何呢?毫无疑问,现在的软件开发方法论目前也在迅速的发展。每天,我们都能够从各类信息渠道获得新的软件开发方法或者新的程序开发语言,每一种开发方法或者开发语言都号称着有着相当的进步,都声称着能简化开发过程,缩短开发时间。
从编程语言的层面上来说,机器语言、汇编语言、C语言、C++、JAVA、C#、Python、Ruby、JavaScript等等这么多的编程语言,每种语言都有着它自己的特点以及存在的理由,其中,有号称无所不能的通用编程语言,如C、C++、JAVA等等,也有着为了特定的目标而实现特定的功能的语言,如
JavaScript、Ruby等等。各种编程语言之间的相互吸收和相互竞争同时又促进了这种编程语言的不断进步与发展。于是,各类编程语言都不断出现自己的最新版本,理所当然的,最新的版本肯定是比前面的版本要先进得多,功能要强大得多。
从编程的方法论上来说,从一开始的机器语言和汇编语言直接对机器码进行编程,到后面,“结构化”的编程方法开始出现并流行起来;而后,“软件危机”的出现最终导致“面向对象”的编程方法大行其道,而“软件工程”的概念则试图将软件开发当作一个系统的工业化工程进行管理;到后来,人们发现,软件的发展实在是太迅速了,软件系统是越做越大,功能是越来越强,而其中出现的问题同时也是越来越多,于是,可复用的软件方法论开始流行,“面向构件”进行编程的理论开始出现;而后,在这基础上,IBM的“SOA理论”则试图去解决一个大型系统内部的各大功能模块或者子系统之间以及几个大系统的整合以及相互连接的问题。当然,这些理论都只是一部分,在这过程中,还出现了更多的号称能够(其实也确实能够)简化编程工作的方法论出现,如“设计模式”、“AOP面向切片编程”、“敏捷程序开发”等等。
就目前来说,现在的软件开发处于百家争鸣的状态,无论从理论上还是实际的应用上,没有哪种开发方法和开发语言是能够一统天下的。当年,JAVA出现的目的就是为了简化开发,代替C++语言,然而,现实的情况却是JAVA的体系架构越来越复杂,越来越庞大。而后,python、ruby等号称更简单的语言出现了,虽然这些语言确实简化了很多的开发
工作,但是,我们却惊奇的发现,没有一种语言能够完全取代另外一种。好笑的是,每种语言都有一批强烈而偏激的支持者,经常听说两种语言的支持者相互贬低对方,争
得面红耳赤,甚至大打出手的。更奇怪的是,每一种语言的版本也在不断的更新,而更新的内容似乎我们永远都用不到(如C++语言,现在就没有哪个编译环境是完全100%的支持其最新的国际标准的)。
2.越来越复杂的软件开发
随着软件开发理论的发展和开发语言、开发环境的进步,我们程序员写代码似乎是应该越来越轻松,而现在的实际情况似乎也确实是如此,以前用汇编语言需要写几百行的代码,用C语言可能只需要写几十行甚至几行,用python语言等最新的编程语言则代码量还会更少得多。各式各样的开发理念的出现同时也指导者我们如何去编写更可靠,更高效,更容易理解和重构的代码。
但是,实际的情况却并非完全如此,抛开学习这些编程语言、理论知识的复杂度来说,就算是我们完全的掌握了这些编程语言和理论知识,完全的能够在实践中轻松的应用这些理论以及语言,我们还是发现,在实际的开发中,编程的复杂度还是越来越高。
这似乎非常的令人迷惑,但确实是真实存在的。也许这是因为现在的信息社会发展越来越快,对信息系统的各种要求(功能性、稳