资讯专栏INFORMATION COLUMN

编程模型(范式)小结

miya / 1955人阅读

摘要:参考链接面向对象编程模型现在的很多编程语言基本都具有面向对象的思想,比如等等,而面向对象的主要思想对象,类,继承,封装,多态比较容易理解,这里就不多多描述了。

前言

在我们的日常日发和学习生活中会常常遇到一些名词,比如 命令式编程模型声明式编程模型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)

比如关系数据库的结构化数据查询语言SQLSQL也是一门声明式语言,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)

在看关于 JavaScriptPython 的介绍的时候,很多文章会提到JavaScriptPython是一门函数式语言。就个人的理解而已,JavaScriptPython不是一门纯函数式语言,具体原因请查看下面的链接,再结合 JavaScriptPython的特性就知道了。代表语言有: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)为中心建立起来的编程模型。

文章部分内容参考:《七周七语言:理解多种编程范式》
备注

还有一些服务器网络编程模型,并发编程模型等等,但是这些编程模型不是编程语言层面的,是针对具体业务而想出的解决办法,所以不是和上面的编程模型是同一个层面的。

待续。。。。。。。。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68141.html

相关文章

  • 编程范式 —— 函数式编程入门

    摘要:在函数式编程中数据在由纯函数组成的管道中传递。函数式编程中函子是实现了函数的容器下文中将函子视为范畴,模型可表示如下但是在函数式编程中要避免使用这种面向对象的编程方式取而代之对外暴露了一个的接口也称为。 showImg(https://segmentfault.com/img/remote/1460000018101204); 该系列会有 3 篇文章,分别介绍什么是函数式编程、剖析函数...

    flyer_dev 评论0 收藏0
  • 和少妇白洁一起学JavaScript之Async/Await

    摘要:匿名函数是我们喜欢的一个重要原因,也是,它们分别消除了很多代码细节上需要命名变量名或函数名的需要。这个匿名函数内,有更多的操作,根据的结果针对目录和文件做了不同处理,而且有递归。 能和微博上的 @响马 (fibjs作者)掰扯这个问题是我的荣幸。 事情缘起于知乎上的一个热贴,诸神都发表了意见: https://www.zhihu.com/questio... 这一篇不是要说明白什么是as...

    Bryan 评论0 收藏0
  • 如何系统地自学 Python?

    摘要:这里推荐一本书源码剖析源码剖析豆瓣这本书把源码中最核心的部分,给出了详细的阐释,不过阅读此书需要对语言内存模型和指针有着很好的理解。   是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?   幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。   Python 的设计哲学之一就是...

    zgbgx 评论0 收藏0
  • 程序员练级攻略(2018):Java底层知识

    摘要:最黑科技的玩法就是字节码编程,也就是动态修改或是动态生成字节码。使用字节码编程可以玩出很多高级玩法,其中最高级的玩法是在程序运行时进行字节码修改和代码注入。 showImg(https://segmentfault.com/img/bVbkqqg?w=1142&h=640);这个是我订阅 陈皓老师在极客上的专栏《左耳听风》,我贴出来是为了自己以后方便学习和记忆,同时也分享给你们一起学习...

    wean 评论0 收藏0

发表评论

0条评论

miya

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<