天天看點

函數式程式設計

FP(function programming)就是函數式程式設計的英文縮寫,那麼究竟什麼是函數式程式設計呢?

程式設計範式

首先,我們應該了解一些程式設計範式的概念。

函數式程式設計是一種程式設計範式, 我們常見的程式設計方式有指令式程式設計、函數式程式設計、邏輯式程式設計, 常見的面向對象的程式設計也是指令式程式設計。  

  

函數式程式設計和指令式程式設計的最大差別:

函數式程式設計與指令式程式設計最大的不同就在于: 函數式程式設計關心的是資料的映射,指令式程式設計關心的是解決問題的步驟。 

函數是什麼:

這裡的函數就是數學上【函數】的概念 --- 即一個輸入對應着确定的輸出(映射)。 這也就是為什麼函數式程式設計叫做【函數】式程式設計了。 這也是函數式程式設計的本質, 比如sqrt(x)函數計算x的平方根,隻要x不變,俺麼無論什麼時候調用,調用幾次,值都是不變的。 

函數式程式設計的好處?

代碼簡潔:

  函數式程式設計大量使用函數,減少了代碼的重複,是以程式比較短,開發速度比較快。

接近自然語言,易于了解:

  函數式程式設計的自由度很高,可以寫出很接近自然語言的代碼。 

  如表達式  (1 + 2)*3 - 4 ,如果我們議程一般的指令式程式設計方法,如下:

  而如果我們把它寫成下面這樣的函數式程式設計,如下:

  可以看到函數式程式設計,更容易了解,看上去更加簡潔。對他進行變形,不難得到另一個寫法:

更友善的代碼管理:

  函數式程式設計不依賴、也不會改變外界的狀态,隻要給定了輸入參數,傳回的結果就必定相同。 是以,每個函數都可以被看做獨立單元,這 有利于單元測試和出錯以及子產品化組合。

代碼的熱更新

  函數式程式設計沒有副作用,隻要接口不變,内部實作和外部無關,是以,可以在運作狀态下直接更新代碼,不需要重新開機,也不需要停機。

參考:http://www.ruanyifeng.com/blog/2012/04/functional_programming.html

繼續閱讀