1 面向机器编程
最初的编程是面向机器编程;编程采用机器语言来编写,用二进制表示机器能识别的指令和数据,也就是直接使用0和1表示。这种编程方式写起来困难、出错了也难以调试。后面出现了汇编语言,利用助记符来帮助程序员记忆一些机器指令的操作码,地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在一定程度上简化了编程的难度,但开发人员仍然要精确掌握CPU指令、寄存器、段地址等底层硬件的细节。
2 面向过程编程
面向过程的语言不再将精力放在关注底层硬件的操作指令、存储等方面。而是关注问题一步步解决的步骤,即问题解决的过程。面向过程相比面向机器是一次思想上的飞跃。将程序员从复杂的机器操作和运行细节中解放出来,转而去关注具体要解决的问题本身。面向过程语言不再与具体的机器绑定,提高了通用性和移植性。
软件危机其原因,衔接到硬件的整体复杂度,与软件开发流程。危机表现在几个方面:
- 项目运行超出预算。
- 项目运行超过时间。
- 软件质量低落。
- 软件通常不匹配需求。
- 项目无法管理,且代码难以维护。
为了解决软件危机提出了“软件工程”和“结构化程序设计”的概念来解决软件危机的问题。(结构化程序设计主要特点是GOTO语句有害论,主张放弃GOTO语句,采取自定而下、逐步细化、模块化)。软件工程和结构化程序设计在一定程度上降低了软件开发的复杂度,是面向过程设计思想的一次改进。
3 面向对象编程
结构化编程一定程度上缓解了软件危机,但随着硬件的快速发展,业务需求的不断增长,应用范围的不断扩展,出现了第二次软件危机。相对于第一次危机体现在软件复杂性上,第二次危机体现在软件的可扩展性、可维护性上。面向对象和面向过程一样不是解决软件危机的银弹,面向对象思想是软件设计思想上的又一次飞跃,更一步缓解了软件危机的负面影响。