1. 程式人生 > >函數式編程(functional programming)

函數式編程(functional programming)

bsp 最重要的 free 科學 行為 大數據處理 擴展 運行 編程語言

(一)什麽是函數式編程?

函數式編程是種編程方式,它將電腦運算視為函數的計算。函數編程語言最重要的基礎是λ演算(lambda calculus),而且λ演算的函數可以接受函數當作輸入(參數)和輸出(返回值)。----來自百科

個人看了n篇博客過後的感覺就是:

將業務邏輯細化,抽象,封裝成一個個功能函數,並借助語言自帶的高階函數api,將整個業務流程轉化為函數之間的相互調用,這就是函數式編程。

(二)包括什麽內容?

傾向於數據就是數據,函數就是函數,函數既可以當做參數傳來傳去,也可以作為返回值,可以把函數理解一個值到另一個值得映射關系。函數可以處理數據,也是並不像面向對象的類概念一樣把數據和函數封在一起,而是讓每個函數都不要去修改原有數據(不可變性),而且通過產生新的數據來作為運算結果(純函數)。

(三)為什麽會流行?

引用透明(Referential transparency),指的是函數的運行不依賴於外部變量或”狀態”,只依賴於輸入的參數,任何時候只要參數相同,引用函數所得到的返回值總是相同的。

函數式編程強調沒有”副作用”,意味著函數要保持獨立,所有功能就是返回一個新的值,沒有其他行為,尤其是不得修改外部變量的值。

沒有副作用使得函數式編程各個獨立的部分的執行順序可以隨意打亂,(多個線程之間)不共享狀態,不會造成資源爭用(Race condition),也就不需要用鎖來保護可變狀態,也就不會出現死鎖,這樣可以更好地進行無鎖(lock-free)的並發操作。

(四)它的擴展:領域;擅長

由於函數式編程方式更適合於數據處理,隨著存儲器容量升高、計算機處理能力大幅提高,它的優勢更加明顯,最近支持函數式編程的語言也逐漸流行,比如python、scale等都因它們對函數式編程的支持被人們重視,從被遺忘的角落重新拾起。函數式編程因為其特點更適用於統計分析數據、科學計算、大數據處理等方面工作,當然並不限於這些,在web開發、服務器腳本等其它方面也很不錯,而面向對象編程更適合於開發和處理業務性強、功能模塊完備的大型業務系統。

函數式編程(functional programming)