编程范式(Programming paradigm)

编程范式(Programming paradigm)

基本含义

托马斯.库恩提出“科学的革命”的范式论之后,Robert Floyd在1979年图灵奖的颁奖演说中使用了编程范式一词。编程范式一般包括三个方面:学科的逻辑体系(继承/抽象/多态)、心理认知因素(拟人化)、自然观(程序的组织艺术,松耦合强聚合)

简单的说,编程范式是程序员看待程序应该具有的观点

一般而言,编程语言的设计者常常让该语言支持某一特定的范式

过程化(命令式)编程

过程化编程,也被称为命令式编程,应该是最原始的、也是我们最熟悉的一种传统的编程方式。从本质上讲,它是“冯.诺伊曼机“运行机制的抽象,它的编程思维方式源于计算机 指令的顺序排列。也就是说:过程化语言模拟的是计算机机器的系统结构

现存的计算机编程语言很多,但是人们把所有支持过程化编程范式的编程语言都被归纳为过程化编程语言。例如机器语言、汇编语言、BASIC、COBOL、C 、FORTRAN、语言等等许多第三代编程语言都被归纳为过程化语言。

过程化语言特别适合解决线性(或者说按部就班)的算法问题。它强调“自上而下(自顶向下)”“精益求精”的设计方式。这种方式非常类似我们的工作和生活方式,因为我们的 日常活动都是按部就班的顺序进行的。

面向对象编程

过程化范式要求程序员用按部就班的算法看待每个问题。很显然,并不是每个问题都适合这种过程化的思维方式。这也就导致了其它程序设计范式出现

面向对象技术一方面借鉴了哲学、心理学、生物学的思考方式,另一方面,它是建立在其他编程技术之上的,是以前的编程思想的自然产物。

面向对象的程序设计模式已经出现二十多年,经过这些年的发展,它的设计思想和设计模式已经稳定的进入编程语言的主流。来自TIOBE Programming Community2010年11月份编程语言排名的前三名Java、C、C++中,Java和C++都是面向对象的编程语言。

面向对象的程序设计包括了三个基本概念:封装性、继承性、多态性。面向对象的程序语言通过类、方法、对象和消息传递,来支持面向对象的程序设计范式。

事件驱动编程

基于事件驱动的程序设计在图形用户界面(GUI)出现很久前就已经被应用于程序设计中,可是只有当图形用户界面广泛流行时,它才逐渐形演变为一种广泛使用的程序设 计模式。

主要包含事件、事件与轮询、事件处理器

并发范式 (未来趋势?)

并发式编程以进程为导向(Process-Oriented),以资源共享与竞争为主线

  • 软件易于重用、维护、测试
  • 公平有效地利用资源,优化程序性能如增大吞吐量、减少响应时间、提高效率等
  • 保障进程安全,防止竞态条件(Race Condition)
  • 保持进程活性,避免死锁、饥饿、活锁、资源枯竭等
  • 减少锁开销、上下文切换等带来的性能损失
  • 妥善处理多进程在算法、调试等方面带来的复杂性

函数范式

函数式编程或称函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象。函数编程语言最重要的基础是λ演算。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。

函数式编程中最古老的例子莫过于1958年被创造出来的LISP了。用LISP编程可以达到精简人力的目的。

比起命令式编程,函数式编程更加强调程序执行的结果而非执行的过程,倡导利用若干简单的执行单元让计算结果不断渐进,逐层推导复杂的运算,而不是设计一个复杂的执行过程。

更多

  • 逻辑式
  • 泛型式
  • 元编程
  • 切面式

参考资料

稿源:燃冰非冰 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合编程 » 编程范式(Programming paradigm)

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录