在咱們的平常日發和學習生活中會經常遇到一些名詞,好比 命令式編程模型
,聲明式編程模型
,xxx語言是面向對象
的等等,這個編程模型處處可見,可是始終搞不清是什麼?什麼語言又是什麼編程模型,當你新接觸一門語言的時候,有些問題是須要首先去思考的,好比「這門語言的編程模型是什麼?」 爲此。這裏整理了一些常見的編程模型,可能不會對每一種編程模型說的很是詳細(受限於水平)
,以及大體介紹每種編程模型的大概信息。css
模型是對事物共性的抽象,編程模型就是對編程的共性的抽象
。html
什麼是編程的共性呢?java
最重要的共性就是:程序設計時,代碼的抽象方式、組織方式或複用方式。編程模型主要是方法與思想。編程模型處於方法或思想性的層面,在不少狀況下,也可稱爲編程方法、編程方式、編程模式或編程技術、編程範式。在這裏就當作同一種說法。介紹編程模型的時候主要經過不一樣的編程語言來解釋。程序員
參考連接:http://www.cnblogs.com/xsmm/a...數據庫
文章中的說法若有不對,歡迎留言指正!同時也歡迎提意見補充內容,完善文章。編程
下面是我的整理的一些常見編程模型,可能還有更多。。。服務器
我的以爲命令式
和過程式
是一個意思,都是一種面向過程
的思想。命令式編程的意思是,程序員須要一步步寫清楚程序須要如何作什麼(How to do What)
。咱們平時使用的編程語言,好比C++、Java等,都有命令式編程的思想。網絡
什麼叫作程序須要如何作什麼(How to do What)
呢?和下個編程模型聲明式一塊兒舉例說明。併發
聲明式編程的意思是,程序員不須要一步步告訴程序如何作,只須要告訴程序在哪些地方作什麼(Where to do What)
。編程語言
好比關係數據庫的結構化數據查詢語言SQL
。SQL
也是一門聲明式語言,SQL
只須要告訴數據庫,處理符合必定條件的數據,而不須要本身一步步判斷每一條數據是否符合條件。SQL的形式通常是 select … where …,update … where …,delete … where …
。固然,這樣一來,不少基層工做,SQL作不了。所以,大部分數據庫都提供了另外的命令式編程語言,用來編寫存儲過程等,以便處理一些更加細節的工做。
這裏的SQL的where
等等關鍵字所帶的各類條件就是告訴程序在哪些地方作什麼。而不須要寫的很是詳細。而很細緻的問題就是程序須要如何作什麼,就須要命令式。
參考連接:http://developer.51cto.com/ar...
如今的不少編程語言基本都具備面向對象的思想,好比java,PHP等等,而面向對象
的主要思想:對象,類,繼承,封裝,多態
比較容易理解,這裏就很少多描述了。
經過目前三種編程模型的分析,發現不少編程語言在設計的時候採用的編程模型就是一個混合的模式,並非必定只有其中的一種。
在看關於 JavaScript
和 Python
的介紹的時候,不少文章會提到JavaScript
和 Python
是一門函數式語言。就我的的理解而已,JavaScript
和 Python
不是一門純函數式語言,具體緣由請查看下面的連接,再結合 JavaScript
和 Python
的特性就知道了。表明語言有:Lisp Erlang(Ericsson Language) Haskell
.
對於函數式編程的更細緻的說明,請看阮一峯老師的文章:
http://www.ruanyifeng.com/blo...
原型編程模型
我的是認爲是一個很是重要的編程模型,可是上學的時候課本卻沒有講,很遺憾。而原型編程模型的表明是如今很火的 JavaScript
,此外還有 IO ,Lua , Self
等等.而JavaScript
在設計之初就參考過IO ,Self
。
原型編程模型的主要思想就是用對象而不是用類來做爲定義對象甚至繼承的基礎
。通常所見的關鍵內容就是 原型鏈 ,委託繼承
等等。
目前知識不夠,之後再補充。
就是採用多種編程模型開設計程序或者編程語言。好比 Scala , Java
等等
這個是一個比較少見的編程模型,表明語言有 PostScript / Forth
。主要思想是使用一個或者多個棧做爲語言的核心特徵
。
這個一樣是一個比較少見的編程模型,表明語言有 Prolog
。 以規則(rule)爲中心創建起來的編程模型。
文章部份內容參考:《七週七語言:理解多種編程範式》
還有一些服務器網絡編程模型,併發編程模型
等等,可是這些編程模型不是編程語言層面的,是針對具體業務而想出的解決辦法,因此不是和上面的編程模型是同一個層面的。
待續。。。。。。。。