程式設計模型(正規化)小結

神話發表於2019-05-11

前言

在我們的日常日發和學習生活中會常常遇到一些名詞,比如 指令式程式設計模型宣告式程式設計模型xxx語言是物件導向的等等,這個程式設計模型到處可見,但是始終搞不清是什麼?什麼語言又是什麼程式設計模型,當你新接觸一門語言的時候,有些問題是需要首先去思考的,比如“這門語言的程式設計模型是什麼?” 為此。這裡整理了一些常見的程式設計模型,可能不會對每一種程式設計模型說的非常詳細(受限於水平),以及大致介紹每種程式設計模型的大概資訊。

概念解釋

模型是對事物共性的抽象,程式設計模型就是對程式設計的共性的抽象

什麼是程式設計的共性呢?

最重要的共性就是:程式設計時,程式碼的抽象方式、組織方式或複用方式。程式設計模型主要是方法與思想。程式設計模型處於方法或思想性的層面,在很多情況下,也可稱為程式設計方法、程式設計方式、程式設計模式或程式設計技術、程式設計正規化。在這裡就當做同一種說法。介紹程式設計模型的時候主要通過不同的程式語言來解釋。

參考連結:http://www.cnblogs.com/xsmm/a…

文章中的說法如有不對,歡迎留言指正!同時也歡迎提意見補充內容,完善文章。

分類

下面是個人整理的一些常見程式設計模型,可能還有更多。。。

  1. 命令式(過程式)程式設計模型
  2. 宣告式程式設計模型
  3. 物件導向程式設計模型
  4. 函數語言程式設計模型
  5. 原型程式設計模型
  6. 混合式程式設計模型
  7. 基於棧的程式設計模型
  8. 基於邏輯的程式設計模型
  9. 待續。。。。。。。。

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)為中心建立起來的程式設計模型。

文章部分內容參考:《七週七語言:理解多種程式設計正規化》

備註

還有一些伺服器網路程式設計模型,併發程式設計模型等等,但是這些程式設計模型不是程式語言層面的,是針對具體業務而想出的解決辦法,所以不是和上面的程式設計模型是同一個層面的。

待續。。。。。。。。

相關文章