编程范型
ShiningRay翻译自英文维基百科,本文内容在GNU自由文档许可证下发布,已经提交给中文维基百科,可以自由添加、更改,最新版本以http://zh.wikipedia.org/wiki/%E7%BC%96%E7%A8%8B%E8%8C%83%E5%9E%8B为准
一个编程范型是一类典型的编程风格(可以对照方法学,是一个从事软件工程的一类典型的风格)。
一个编程范型提供了(同时决定了)一个程序员对程序执行的看法。例如,在面向对象编程中,程序员认为程序是一系列
相互作用的对象,而在函数式编程中一个程序会被看作是一个无状态的函数计算的序列。
正如软件工程中不同的群体会提倡不同的方法学一样,不同的编程语言也会提倡不同的编程范型。一些语言是专门为某个特
定的范型设计的(如Smalltalk和Java支持面向对象编程,而Haskell和Scheme则支持函数式编程),同时还有另一些语言支
持多种范型(如Common Lisp、Python和Oz)
很多编程范型已经被熟知他们禁止使用哪些技术,同时允许使用哪些。 例如,纯粹的函数式编程不允许有副作用;结构化编程不允
许使用goto。可能是因为这个原因,新的范型常常被那些惯于较早的风格的人认为是教条主义或过分严格。然而,这样避免某些技术反而
更加证明了关于程序正确性——或仅仅是理解它的行为——的法则,而不用限制程序语言的一般性。
编程范型和编程语言之间的关系可能十分复杂,由于一个编程语言可以支持|多种范型。例如,C++设计时,支
持过程化编程、基于对象编程、面向对象编程以及泛型编程。然而,设计师和程序员们要考虑如何使用这些范型元素来构建
一个程序。一个人可以用C++写出一个完全过程化的程序,另一个人也可以用C++写出一个纯粹的面向对象程序,甚至还有人可以写出杂揉了两
种范型的程序。
例子
- 结构化编程, 对比 非结构化编程
- 命令式编程, 对比 声明式编程
- 消息传递编程, 对比 命令式编程
- 过程化编程, 对比 函数式编程
- Value-level programming, compared to Function-level programming
- 流程驱动编程, 对比 事件驱动编程
- 纯量编程, 对比 阵列编程
- 基于类编程,对比基于原型编程 (在面向对象编程的上下文中)
- Rule-based programming, compared to Constraint programming (在逻辑编程的上下文中)
- Component-oriented programming (as in OLE)
- 面向方面编程 (如 AspectJ)
- 符号式编程 (如 Mathematica)
- 面向表格编程 (如 Microsoft FoxPro)
- 管道编程 (如 Unix命令中的管道)
- Post-object programming
- 面向主题编程
- 自省编程 或称 反射编程
参见
文章来源: http://herald.seu.edu.cn/blog/shiningray/archive/2005/08/13/45444.aspx