Eli's Blog

1. 编程模型

编程模型就是对编程的共性的抽象。

什么是编程的共性呢?

​ 最重要的共性就是:程序设计时,代码的抽象方式、组织方式或复用方式。编程模型主要是方法与思想。编程模型处于方法或思想性的层面,在很多情况下,也可称为编程方法、编程方式、编程模式或编程技术、编程范式。在这里就当做同一种说法。介绍编程模型的时候主要通过不同的编程语言来解释。

2. 分类

2.1 命令式编程模型(Imperative Programming)

命令式, 即过程式,是一种面向过程的思想。

命令式编程的意思是,程序员需要一步步写清楚程序需要如何做什么(How to do What)。我们平时使用的编程语言,比如C++、Java等,都有命令式编程的思想。

2.2 声明式编程模型(Declarative Programming)

声明式编程,程序员不需要一步步告诉程序如何做,只需要告诉程序在哪些地方做什么(Where to do What)

比如关系数据库的结构化数据查询语言SQLSQL也是一门声明式语言,SQL只需要告诉数据库,处理符合一定条件的数据,而不需要自己一步步判断每一条数据是否符合条件。SQL的形式一般是 select … where …,update … where …,delete … where …。当然,这样一来,很多基层工作,SQL做不了。因此,大部分数据库都提供了另外的命令式编程语言,用来编写存储过程等,以便处理一些更加细节的工作。

2.3 面向对象编程模型(Object-oriented programming)

面向对象的主要思想:对象,类,继承,封装,多态, 比如java, C++等

2.4 函数式编程模型(Functional programming)

代表语言有:Lisp Erlang(Ericsson Language) Haskell .

JavaScriptPython 也是函数式语言。但它们不是纯函数式语言。

特征:

  • 函数是”第一等公民”:函数与其他数据类型一样,处于平等地位,可以赋值给其他变量,也可以作为参数,传入另一个函数,或者作为别的函数的返回值。
  • 只用”表达式”,不用”语句”:表达式”(expression)是一个单纯的运算过程,总是有返回值;”语句”(statement)是执行某种操作,没有返回值。函数式编程要求,只使用表达式,不使用语句。也就是说,每一步都是单纯的运算,而且都有返回值。
  • 没有”副作用”:函数内部与外部互动(最典型的情况,就是修改全局变量的值),产生运算以外的其他结果。
  • 不修改状态:函数式编程只是返回新的值,不修改系统变量。因此,不修改变量
  • 引用透明:函数的运行不依赖于外部变量或”状态”,只依赖于输入的参数,任何时候只要参数相同,引用函数所得到的返回值总是相同的。

2.5 原型编程模型(Prototype programming)

原型编程模型,主要思想用对象而不是用类来作为定义对象甚至继承的基础。一般所见的关键内容就是 原型链 ,委托继承等等。

JavaScript 是一种原型编程模型

2.6 混合式编程模型(Hybrid programming)

就是采用多种编程模型开设计程序或者编程语言。比如 Scala , Java 等等

2.7 基于栈的编程模型(Stack-based programming)

比较少见的编程模型,代表语言有 PostScript / Forth。主要思想是使用一个或者多个栈作为语言的核心特征

2.8 基于逻辑的编程模型(Logic-based programming)

这个同样是一个比较少见的编程模型,代表语言有 Prolog。 以规则(rule)为中心建立起来的编程模型。


 上一页