關鍵區別–函數式編程與命令式編程
函數式程序設計與命令式程序設計的關鍵區別在於,函數式程序設計將計算看作數學函數,避免了狀態和數據的變化,而命令式程序設計使用改變程序狀態的語句。
編程範例提供了一種構建計算機程序的結構和元素的風格。編程範例有助於根據編程語言的特徵對其進行分類。編程語言可能會影響更多的範例。在面向對象的範例中,程序是用對象構造的,而對象是用方法傳遞消息的。邏輯程序設計只能用數理邏輯來表示計算。另外兩種編程範式是函數式編程和命令式編程。函數式編程允許將計算表示為數學函數的求值。命令式編程提供顯式更改內存狀態的語句。本文討論函數式編程與命令式編程的區別。
目錄
1. 概述和主要區別
2. 什麼是函數式編程
3. 什麼是命令式編程
4. 函數式編程與命令式編程的相似性
5. 並排比較-函數式編程與表格形式的命令式編程
6.摘要
什麼是函數式程序設計(functional programming)?
函數式程序設計是以數學為基礎的。函數式編程背後的關鍵原則是,所有的計算都被看作是獨立數學函數的組合。數學函數將輸入映射到輸出。假設有一個函數叫做f(x)=x*x,x值1映射到輸出1。x值2映射到輸出4。x值3映射到輸出9,依此類推。
在函數式編程中,要考慮模式。函數式編程語言Haskell使用下面的方法來求數的總和。
sum函數有整數值,結果也是整數。它可以寫成sum:[int]->int。可以按照以下模式進行求和。
sum[n]=n,一個數的和就是這個數本身。
如果有一個數字列表,可以寫如下。n代表第一個數字,ns代表其他數字
和(n,ns)=n+和ns。
上面的模式可以用來求3,4,5三個數的和。
3+總和[4,5]
3+(4+和[5])
3+4+5=12
如果一個函數或一個表達式修改了它的作用域之外的某個狀態,或者除了返回值外,它還與調用函數發生了可觀察的交互作用,則稱它具有副作用。函數式編程將這種副作用最小化。狀態變化不依賴於函數輸入。它在理解程序行為時很有用。函數式編程的一個缺點是,與命令式編程相比,學習函數式編程更困難。
什麼是命令式程序設計(imperative programming)?
命令式編程是一種編程範式,它使用改變程序狀態的語句。它的重點是描述程序如何運行。Java、C和C等編程語言是命令式編程語言。它提供了一個循序漸進的步驟。命令式編程語言包含if、else、while、for循環、類、對象和函數等結構。
十個數字的總和可以在Java中找到,如下所示。在每次迭代中,i值被添加到sum並分配給sum變量。在每次迭代中,求和值將繼續加到先前計算的總和上。
整數和=0;
對於(int i=0;i<=10;i++){
sum=總和+i;
}
命令式編程易於學習、理解和調試。由於使用狀態變量,很容易找到程序狀態。它的一些缺點是它會使代碼變得冗長,同時也會使可伸縮性最小化。
什麼是函數式程序設計與命令式程序設計的相似性(the similarity between functional programming and imperative programming)?
- 函數式編程和命令式編程都是編程範例。
函數式程序設計(functional programming)和命令式程序設計(imperative programming)的區別
命令式編程與函數式編程 | |
函數式程序設計是一種將計算視為對數學函數的求值,避免改變狀態和可變數據的編程範式。 | 命令式編程是一種編程範式,它使用語句來改變程序的狀態。 |
結構 | |
函數式編程包含函數調用和高階函數。 | 命令式編程包含if、else、while、for循環、函數、類和對象。 |
程序設計語言 | |
Scala、Haskell和Lisp是函數式編程語言。 | C、C++、java是必不可少的編程語言。 |
專注 | |
函數式編程關注最終結果。 | 命令式編程側重於描述程序如何運行。 |
簡單 | |
函數式編程很難。 | 命令式編程更容易。 |
總結 - 函數式程序設計(functional programming) vs. 命令式程序設計(imperative programming)
編程範例提供了一種構建計算機程序的結構和元素的風格。函數式編程和命令式編程就是其中的兩種。函數式程序設計與命令式程序設計的區別在於,函數式程序設計將計算看作數學函數,避免改變狀態和可變數據,而命令式編程使用改變程序狀態的語句。
引用
1.“命令式編程”,維基百科,維基媒體基金會,2018年3月28日。此處提供2.“函數式編程”,維基百科,維基媒體基金會,2018年3月28日。此處提供3.Computerphile。YouTube,YouTube,2013年8月30日。點擊此處
2.“函數式編程”,維基百科,維基媒體基金會,2018年3月28日
3.計算機愛好者。YouTube,YouTube,2013年8月30日