摘要:參考鏈接面向?qū)ο缶幊棠P同F(xiàn)在的很多編程語言基本都具有面向?qū)ο蟮乃枷?,比如等等,而面向?qū)ο蟮闹饕枷雽ο螅?,繼承,封裝,多態(tài)比較容易理解,這里就不多多描述了。
前言
在我們的日常日發(fā)和學(xué)習(xí)生活中會常常遇到一些名詞,比如 命令式編程模型,聲明式編程模型,xxx語言是面向?qū)ο?/b>的等等,這個編程模型到處可見,但是始終搞不清是什么?什么語言又是什么編程模型,當你新接觸一門語言的時候,有些問題是需要首先去思考的,比如“這門語言的編程模型是什么?” 為此。這里整理了一些常見的編程模型,可能不會對每一種編程模型說的非常詳細(受限于水平),以及大致介紹每種編程模型的大概信息。
概念解釋模型是對事物共性的抽象,編程模型就是對編程的共性的抽象。
什么是編程的共性呢?
最重要的共性就是:程序設(shè)計時,代碼的抽象方式、組織方式或復(fù)用方式。編程模型主要是方法與思想。編程模型處于方法或思想性的層面,在很多情況下,也可稱為編程方法、編程方式、編程模式或編程技術(shù)、編程范式。在這里就當做同一種說法。介紹編程模型的時候主要通過不同的編程語言來解釋。
參考鏈接:http://www.cnblogs.com/xsmm/a...
文章中的說法如有不對,歡迎留言指正!同時也歡迎提意見補充內(nèi)容,完善文章。
分類下面是個人整理的一些常見編程模型,可能還有更多。。。
命令式(過程式)編程模型
聲明式編程模型
面向?qū)ο缶幊棠P?/p>
函數(shù)式編程模型
原型編程模型
混合式編程模型
基于棧的編程模型
基于邏輯的編程模型
待續(xù)。。。。。。。。
1.命令式編程模型(Imperative Programming)個人覺得命令式和過程式是一個意思,都是一種面向過程的思想。命令式編程的意思是,程序員需要一步步寫清楚程序需要如何做什么(How to do What)。我們平時使用的編程語言,比如C++、Java等,都有命令式編程的思想。
什么叫做程序需要如何做什么(How to do What)呢?和下個編程模型聲明式一起舉例說明。
2.聲明式編程模型(Declarative Programming)聲明式編程的意思是,程序員不需要一步步告訴程序如何做,只需要告訴程序在哪些地方做什么(Where to do What)。
比如關(guān)系數(shù)據(jù)庫的結(jié)構(gòu)化數(shù)據(jù)查詢語言SQL。SQL也是一門聲明式語言,SQL只需要告訴數(shù)據(jù)庫,處理符合一定條件的數(shù)據(jù),而不需要自己一步步判斷每一條數(shù)據(jù)是否符合條件。SQL的形式一般是 select … where …,update … where …,delete … where …。當然,這樣一來,很多基層工作,SQL做不了。因此,大部分數(shù)據(jù)庫都提供了另外的命令式編程語言,用來編寫存儲過程等,以便處理一些更加細節(jié)的工作。
這里的SQL的where 等等關(guān)鍵字所帶的各種條件就是告訴程序在哪些地方做什么。而不需要寫的非常詳細。而很細致的問題就是程序需要如何做什么,就需要命令式。
參考鏈接:http://developer.51cto.com/ar...
3.面向?qū)ο缶幊棠P停∣bject-oriented programming)現(xiàn)在的很多編程語言基本都具有面向?qū)ο蟮乃枷耄热鏹ava,PHP等等,而面向?qū)ο?/b>的主要思想:對象,類,繼承,封裝,多態(tài)比較容易理解,這里就不多多描述了。
通過目前三種編程模型的分析,發(fā)現(xiàn)很多編程語言在設(shè)計的時候采用的編程模型就是一個混合的模式,并不是一定只有其中的一種。
4.函數(shù)式編程模型(Functional programming)在看關(guān)于 JavaScript 和 Python 的介紹的時候,很多文章會提到JavaScript和 Python是一門函數(shù)式語言。就個人的理解而已,JavaScript和 Python不是一門純函數(shù)式語言,具體原因請查看下面的鏈接,再結(jié)合 JavaScript 和 Python的特性就知道了。代表語言有:Lisp Erlang(Ericsson Language) Haskell .
對于函數(shù)式編程的更細致的說明,請看阮一峰老師的文章:
http://www.ruanyifeng.com/blo...
原型編程模型個人是認為是一個非常重要的編程模型,但是上學(xué)的時候課本卻沒有講,很遺憾。而原型編程模型的代表是現(xiàn)在很火的 JavaScript,此外還有 IO ,Lua , Self 等等.而JavaScript在設(shè)計之初就參考過IO ,Self。
原型編程模型的主要思想就是用對象而不是用類來作為定義對象甚至繼承的基礎(chǔ)。一般所見的關(guān)鍵內(nèi)容就是 原型鏈 ,委托繼承等等。
目前知識不夠,以后再補充。
6.混合式編程模型(Hybrid programming)就是采用多種編程模型開設(shè)計程序或者編程語言。比如 Scala , Java 等等
7.基于棧的編程模型(Stack-based programming)這個是一個比較少見的編程模型,代表語言有 PostScript / Forth。主要思想是使用一個或者多個棧作為語言的核心特征。
8.基于邏輯的編程模型(Logic-based programming)這個同樣是一個比較少見的編程模型,代表語言有 Prolog。 以規(guī)則(rule)為中心建立起來的編程模型。
文章部分內(nèi)容參考:《七周七語言:理解多種編程范式》備注
還有一些服務(wù)器網(wǎng)絡(luò)編程模型,并發(fā)編程模型等等,但是這些編程模型不是編程語言層面的,是針對具體業(yè)務(wù)而想出的解決辦法,所以不是和上面的編程模型是同一個層面的。
待續(xù)。。。。。。。。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68141.html
摘要:在函數(shù)式編程中數(shù)據(jù)在由純函數(shù)組成的管道中傳遞。函數(shù)式編程中函子是實現(xiàn)了函數(shù)的容器下文中將函子視為范疇,模型可表示如下但是在函數(shù)式編程中要避免使用這種面向?qū)ο蟮木幊谭绞饺《畬ν獗┞读艘粋€的接口也稱為。 showImg(https://segmentfault.com/img/remote/1460000018101204); 該系列會有 3 篇文章,分別介紹什么是函數(shù)式編程、剖析函數(shù)...
摘要:匿名函數(shù)是我們喜歡的一個重要原因,也是,它們分別消除了很多代碼細節(jié)上需要命名變量名或函數(shù)名的需要。這個匿名函數(shù)內(nèi),有更多的操作,根據(jù)的結(jié)果針對目錄和文件做了不同處理,而且有遞歸。 能和微博上的 @響馬 (fibjs作者)掰扯這個問題是我的榮幸。 事情緣起于知乎上的一個熱貼,諸神都發(fā)表了意見: https://www.zhihu.com/questio... 這一篇不是要說明白什么是as...
摘要:這里推薦一本書源碼剖析源碼剖析豆瓣這本書把源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書需要對語言內(nèi)存模型和指針有著很好的理解。 是否非常想學(xué)好 Python,一方面被瑣事糾纏,一直沒能動手,另一方面,擔心學(xué)習(xí)成本太高,心里默默敲著退堂鼓? 幸運的是,Python 是一門初學(xué)者友好的編程語言,想要完全掌握它,你不必花上太多的時間和精力。 Python 的設(shè)計哲學(xué)之一就是...
摘要:最黑科技的玩法就是字節(jié)碼編程,也就是動態(tài)修改或是動態(tài)生成字節(jié)碼。使用字節(jié)碼編程可以玩出很多高級玩法,其中最高級的玩法是在程序運行時進行字節(jié)碼修改和代碼注入。 showImg(https://segmentfault.com/img/bVbkqqg?w=1142&h=640);這個是我訂閱 陳皓老師在極客上的專欄《左耳聽風(fēng)》,我貼出來是為了自己以后方便學(xué)習(xí)和記憶,同時也分享給你們一起學(xué)習(xí)...
閱讀 2056·2021-09-07 10:24
閱讀 2114·2019-08-30 15:55
閱讀 2070·2019-08-30 15:43
閱讀 695·2019-08-29 15:25
閱讀 1097·2019-08-29 12:19
閱讀 1964·2019-08-23 18:32
閱讀 1552·2019-08-23 17:59
閱讀 971·2019-08-23 12:22