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