计算机应用离不开编写程序。按不同的思路和方法来编写程序,就形成不同的编程范型。
1956年,世界上第一个高级语言FORTRAN问世。50多年来,高级语言的编程范型大体经历了3次演变,即过程式范型、面向对象编程范型与基于构件技术的编程范型。
1:过程式编程范型
过程式编程范型遵循“程序=数据结构+算法”的思路,把程序理解为由一组被动的数据和一组能动的过程所构成。编程时,先设计数据结构,再围绕数据结构编写其算法过程。程序运行后,获得预期的计算结果或正确的操作,借以满足程序的功能需求。对于比较大的程序,必须先进行功能分解,把较小的功能编写为子程序,子程序在调用子子程序,直至最终将程序由一组组大小适中,、层层调用的模块所构成的应用程序系统。
在客观事物中,实体的内部“状态”(一般用数据表示)和“运动”(施加于数据的操作)总是结合在一起的。可是在用POPL编码时,程序模型(称为解空间)却被人为地构造为偏离客观实体本身的模型(称为问题空间)。随着程序规模的扩大,这类编程范型的缺陷越来越明显,在错综复杂的调用下,即使功能可以满足,性能也不容易满足,使程序难于维护和移植。因此,这类范型通常只用于编写代码在50000行一下、不会轻易更改的应用程序。
2:面向对象编程范型
在面向对象的程序设计中,数据及其操作被封装在一个个称为对象(Object)的统一体中,对象之间则通过消息(message)相互联系,“对象+消息”的机制取代了“数据结构+算法”的思路,因而较好地实现了解空间与问题空间的一致性,从而为解决软件危机带来了新的希望。
3:基于构件技术的编程范型
构件(component)可以理解为标准化(或者规则化)的对象类。它本质上是一种通用的、可支持不同应用程序的组件,正如硬件中的标准件一样,插入不同的平台或环境后即可直接运行。
基于构件的开发技术(CBD)与面向对象技术其实是一脉相承的。它给软件开发人员带来了根本的变革,就是把面向特定应用的OO编程,扩展为面向整个“领域”的CBD编程,使查找与集成适合于所需领域的构件称为这一新编程范型的主要工作。由此可见,CBD实际上是OO开发的延伸与归宿。现代的网络应用程序,几乎普遍采用基于构件技术的编程范型。
4:3种编程范型的比较
常用编程粒度的大小来比较3种编程范型的差异。
过程式编程范型:着眼于程序的过程和基本控制结构,粒度最小。
面向对象编程范型:着眼于程序中的对象,粒度比较大。
基于构件技术的编程范型:着眼于适合整个领域的类对象,粒度更大。