近些年在大數據分布式計算的急速發展下,催生出各種大型軟件的工業需求。而這種大型軟件要容易理解和維護,OOP繁瑣的語法及指令式編程肯定是力不從心的。于是人們就把視野重新回歸到了沒有副作用的編程范式----FP函數式。
函數式編程強調函數組合,把一個函數的輸出當做另一個函數的輸入組合成一個更大的函數。我們可以直接面對最基本的組件編程,組合過程是明確可料的(函數引用透明),把細微的功能組合成大型軟件,而且還能避免重復代碼。增加了可讀性和可維護性。
特性:
1.閉包和高階函數
閉包:依照函數文本運行時創建的函數值(對象)
實質上,閉包是起函數的作用并可以像對象一樣操作的對象。
高階函數可以用另一個函數(間接地,用一個表達式) 作為其輸入參數,在某些情況下,它甚至返回一個函數作為其輸出參數。這兩種結構結合在一起使得可以用優雅的方式進行模塊化編程,這是使用 FP 的最大好處。
2.惰性計算(求值)
表達式不是在綁定到變量時立即計算,而是在求值程序需要產生表達式的值時進行計算。
3.函數是第一等公民
4.引用透明
任何程序中符合引用透明的的表達式都可以由它的的結果所替代,而不改變該程序的含義。
5.沒有副作用
一個函數在程序的執行過程中除了根據輸入參數給出的運算結果之外沒有其他的影響,就可以說是沒有副作用的
6.只用‘表達式’,不用‘語句’
告訴計算做什么,而不是告訴它怎么做。
7.狀態不可變
好處:
1. 代碼簡潔,開發快速
2. 接近自然語言,易于理解
3. 更方便的代碼管理
4. 易于"并發編程"
5. 代碼的熱升級