编程模型(范式)小结
前言
在我们的日常日发和学习生活中会常常遇到一些名词,比如 命令式编程模型
,声明式编程模型
,xxx语言是面向对象
的等等,这个编程模型到处可见,但是始终搞不清是什么?什么语言又是什么编程模型,当你新接触一门语言的时候,有些问题是需要首先去思考的,比如“这门语言的编程模型是什么?” 为此。这里整理了一些常见的编程模型,可能不会对每一种编程模型说的非常详细(受限于水平)
,以及大致介绍每种编程模型的大概信息。
概念解释
模型是对事物共性的抽象,编程模型就是对编程的共性的抽象
。
什么是编程的共性呢?
最重要的共性就是:程序设计时,代码的抽象方式、组织方式或复用方式。编程模型主要是方法与思想。编程模型处于方法或思想性的层面,在很多情况下,也可称为编程方法、编程方式、编程模式或编程技术、编程范式。在这里就当做同一种说法。介绍编程模型的时候主要通过不同的编程语言来解释。
参考链接:http://www.cnblogs.com/xsmm/a...
文章中的说法如有不对,欢迎留言指正!同时也欢迎提意见补充内容,完善文章。
分类
下面是个人整理的一些常见编程模型,可能还有更多。。。
- 命令式(过程式)编程模型
- 声明式编程模型
- 面向对象编程模型
- 函数式编程模型
- 原型编程模型
- 混合式编程模型
- 基于栈的编程模型
- 基于逻辑的编程模型
- 待续。。。。。。。。
1.命令式编程模型(Imperative Programming)
个人觉得命令式
和过程式
是一个意思,都是一种面向过程
的思想。命令式编程的意思是,程序员需要一步步写清楚程序需要如何做什么(How to do What)
。我们平时使用的编程语言,比如C++、Java等,都有命令式编程的思想。
什么叫做程序需要如何做什么(How to do What)
呢?和下个编程模型声明式一起举例说明。
2.声明式编程模型(Declarative Programming)
声明式编程的意思是,程序员不需要一步步告诉程序如何做,只需要告诉程序在哪些地方做什么(Where to do What)
。
比如关系数据库的结构化数据查询语言SQL
。SQL
也是一门声明式语言,SQL
只需要告诉数据库,处理符合一定条件的数据,而不需要自己一步步判断每一条数据是否符合条件。SQL的形式一般是 select … where …,update … where …,delete … where …
。当然,这样一来,很多基层工作,SQL做不了。因此,大部分数据库都提供了另外的命令式编程语言,用来编写存储过程等,以便处理一些更加细节的工作。
这里的SQL的where
等等关键字所带的各种条件就是告诉程序在哪些地方做什么。而不需要写的非常详细。而很细致的问题就是程序需要如何做什么,就需要命令式。
参考链接:http://developer.51cto.com/ar...
3.面向对象编程模型(Object-oriented programming)
现在的很多编程语言基本都具有面向对象的思想,比如java,PHP等等,而面向对象
的主要思想:对象,类,继承,封装,多态
比较容易理解,这里就不多多描述了。
通过目前三种编程模型的分析,发现很多编程语言在设计的时候采用的编程模型就是一个混合的模式,并不是一定只有其中的一种。
4.函数式编程模型(Functional programming)
在看关于 JavaScript
和 Python
的介绍的时候,很多文章会提到JavaScript
和 Python
是一门函数式语言。就个人的理解而已,JavaScript
和 Python
不是一门纯函数式语言,具体原因请查看下面的链接,再结合 JavaScript
和 Python
的特性就知道了。代表语言有:Lisp Erlang(Ericsson Language) Haskell
.
对于函数式编程的更细致的说明,请看阮一峰老师的文章:
http://www.ruanyifeng.com/blo...
5.原型编程模型(Prototype programming)
原型编程模型
个人是认为是一个非常重要的编程模型,但是上学的时候课本却没有讲,很遗憾。而原型编程模型的代表是现在很火的 JavaScript
,此外还有 IO ,Lua , Self
等等.而JavaScript
在设计之初就参考过IO ,Self
。
原型编程模型的主要思想就是用对象而不是用类来作为定义对象甚至继承的基础
。一般所见的关键内容就是 原型链 ,委托继承
等等。
目前知识不够,以后再补充。
6.混合式编程模型(Hybrid programming)
就是采用多种编程模型开设计程序或者编程语言。比如 Scala , Java
等等
7.基于栈的编程模型(Stack-based programming)
这个是一个比较少见的编程模型,代表语言有 PostScript / Forth
。主要思想是使用一个或者多个栈作为语言的核心特征
。
8.基于逻辑的编程模型(Logic-based programming)
这个同样是一个比较少见的编程模型,代表语言有 Prolog
。 以规则(rule)为中心建立起来的编程模型。
文章部分内容参考:《七周七语言:理解多种编程范式》
备注
还有一些服务器网络编程模型,并发编程模型
等等,但是这些编程模型不是编程语言层面的,是针对具体业务而想出的解决办法,所以不是和上面的编程模型是同一个层面的。
待续。。。。。。。。