函數式程序設計是一種以表達式求值為計算基礎的編程范式,它的特點是使用高階函數、引用透明和延遲求值,它的優點是程序易于閱讀,它們非常可靠,并且可以分解成組件。缺點是計算速度可能很慢,并且其風格和語法與其他常見的編...
函數式程序設計是一種以表達式求值為計算基礎的編程范式,它的特點是使用高階函數、引用透明和延遲求值,它的優點是程序易于閱讀,它們非常可靠,并且可以分解成組件。缺點是計算速度可能很慢,并且其風格和語法與其他常見的編程風格完全不同。函數式編程風格更多地被學術界所接受,而不是計算機科學專業人士。函數式編程是由清晰的輸入和輸出。顧名思義,函數是這種編程范式的基本部分。函數可以嵌套在其他函數中,稱為高階函數,每個高階函數都可以分解成易于理解和調試的積木函數,一些高階函數的例子是Map和Nest,函數映射取函數F和變量列表,例如(x,y,z),并給出一個列表中的結果:Map[F,(x,y,z)]=(F(x,y,z))=(F(x),F(y),F(z))。Nest接受函數F、變量x和迭代次數:Nest[F,x,3]=F(F(F(x)))。純函數編程接受輸入并返回輸出,而不改變變量的狀態。換句話說,不管程序中以前發生了什么,具有相同輸入的函數總是會給出相同的結果。這稱為引用透明。由于數學函數是引用透明的,函數編程對許多數學家、工程師和科學家來說都是直觀的函數意味著函數求值的順序并不重要,因此在需要函數結果之前不需要對函數進行求值,這稱為延遲求值這與命令式編程完全不同,命令式程序從第一個命令開始,一直運行到最后一個命令。惰性計算跳過程序中不符合邏輯或多余的部分,它能自動優化程序并減少計算時間。函數式程序設計比其他編程模式有許多優點。輸入和輸出清晰的函數易于閱讀和理解。一旦一個函數被徹底調試,它就可以可靠地用于其他應用程序。多核計算機可以計算并行獨立計算的函數,極大地提高了程序的性能。不幸的是,并不是所有的程序都適合并行計算,而且計算函數程序可能相當慢。函數程序嚴重依賴遞歸,這通常比使用傳統的循環或迭代方法效率低。事實上,函數式編程可能很笨拙,也很難學習,因為它不像其他更常見的范例,如面向對象編程。學者們傾向于青睞函數式編程,因為它提供了一種清晰易懂的方法來編程復雜的現實世界問題。一些純語言是Haskell和ErlangMathematica專攻符號數學,R專攻統計學,J專攻金融分析,多半徑語言如Scala和F#既支持函數式編程,也支持其他編程風格
-
發表于 2020-08-07 01:39
- 閱讀 ( 726 )
- 分類:電腦網絡