天天看點

程式設計範式:指令式程式設計(Imperative)、聲明式程式設計(Declarative)和函數式程式設計(Functional)

文章目錄

      • 1. 指令式程式設計
      • 2.聲明式程式設計
      • 3.函數式程式設計

主要的程式設計範式有三種:指令式程式設計,聲明式程式設計和函數式程式設計。

1. 指令式程式設計

指令式程式設計的主要思想是關注計算機執行的步驟,即一步一步告訴計算機先做什麼再做什麼。

比如:如果你想在一個數字集合 collection(變量名) 中篩選大于 5 的數字,你需要這樣告訴計算機:

第一步,建立一個存儲結果的集合變量 results;

第二步,周遊這個數字集合 collection;

第三步:一個一個地判斷每個數字是不是大于 5,如果是就将這個數字添加到結果集合變量 results 中。

代碼實作如下:

List<int> results = new List<int>();
foreach(var num in collection)
{
    if (num > 5)
          results.Add(num);
}
           

很明顯,這個樣子的代碼是很常見的一種,不管你用的是

C

,

C++

還是

C#

,

Java

,

Javascript

,

BASIC

,

Python

,

Ruby

等等,你都可以以這個方式寫。

2.聲明式程式設計

聲明式程式設計是以資料結構的形式來表達程式執行的邏輯。它的主要思想是告訴計算機應該做什麼,但不指定具體要怎麼做。

SQL 語句就是最明顯的一種聲明式程式設計的例子,例如:

SELECT * FROM collection WHERE num > 5
           

除了

SQL

,網頁程式設計中用到的

HTML

CSS

也都屬于聲明式程式設計。

通過觀察聲明式程式設計的代碼我們可以發現它有一個特點是它不需要建立變量用來存儲資料。

另一個特點是它不包含循環控制的代碼如

for

while

3.函數式程式設計

函數式程式設計和聲明式程式設計是有所關聯的,因為他們思想是一緻的:即隻關注做什麼而不是怎麼做。但函數式程式設計不僅僅局限于聲明式程式設計。

List<Number> results = collection.stream()
                                 .filter(n -> n > 5)
                                 .collect(Collectors.toList());