FP(function programming)就是函數式程式設計的英文縮寫,那麼究竟什麼是函數式程式設計呢?
程式設計範式
首先,我們應該了解一些程式設計範式的概念。
函數式程式設計是一種程式設計範式, 我們常見的程式設計方式有指令式程式設計、函數式程式設計、邏輯式程式設計, 常見的面向對象的程式設計也是指令式程式設計。
函數式程式設計和指令式程式設計的最大差別:
函數式程式設計與指令式程式設計最大的不同就在于: 函數式程式設計關心的是資料的映射,指令式程式設計關心的是解決問題的步驟。
函數是什麼:
這裡的函數就是數學上【函數】的概念 --- 即一個輸入對應着确定的輸出(映射)。 這也就是為什麼函數式程式設計叫做【函數】式程式設計了。 這也是函數式程式設計的本質, 比如sqrt(x)函數計算x的平方根,隻要x不變,俺麼無論什麼時候調用,調用幾次,值都是不變的。
函數式程式設計的好處?
代碼簡潔:
函數式程式設計大量使用函數,減少了代碼的重複,是以程式比較短,開發速度比較快。
接近自然語言,易于了解:
函數式程式設計的自由度很高,可以寫出很接近自然語言的代碼。
如表達式 (1 + 2)*3 - 4 ,如果我們議程一般的指令式程式設計方法,如下:
而如果我們把它寫成下面這樣的函數式程式設計,如下:
可以看到函數式程式設計,更容易了解,看上去更加簡潔。對他進行變形,不難得到另一個寫法:
更友善的代碼管理:
函數式程式設計不依賴、也不會改變外界的狀态,隻要給定了輸入參數,傳回的結果就必定相同。 是以,每個函數都可以被看做獨立單元,這 有利于單元測試和出錯以及子產品化組合。
代碼的熱更新
函數式程式設計沒有副作用,隻要接口不變,内部實作和外部無關,是以,可以在運作狀态下直接更新代碼,不需要重新開機,也不需要停機。
參考:http://www.ruanyifeng.com/blog/2012/04/functional_programming.html