跳轉到內容

函數語言程式設計語言概念/函數語言程式設計語言

來自 Wikibooks,開放書籍,開放世界

函數語言程式設計語言概念

[編輯 | 編輯原始碼]

函數語言程式設計是一種宣告式程式設計的形式,它是一種正規化,在這種正規化下,程式的計算由其基本邏輯描述。這種方法與指令式程式設計形成對比,指令式程式設計使用特定指令來描述計算是如何執行的。在嚴格的函式式語言中,唯一形式的計算是函式。與數學一樣,函式透過等式建立了特定輸入和輸出之間的關係。對於函式式程式設計師來說,給定計算底層的具體實現是不可見的。從這個意義上說,我們傾向於說函數語言程式設計允許人們專注於要計算的內容。

雖然函數語言程式設計語言在傳統上並沒有像命令式語言那樣在行業中取得成功,但近年來它們越來越受歡迎。函數語言程式設計風格的這種日益普及是由於許多因素造成的。像 Haskell 這樣的典型函式式語言的優點包括沒有可變資料和相關的副作用,這種特性被稱為 *純度*,我們將進一步研究。隨著新型並行架構的引入,我們也看到了併發程式設計技術的同步發展。因為函式式語言與全域性狀態無關,所以它們為沒有競爭條件的實現提供了一個自然的框架。此外,它們簡化了容錯函式的設計,因為只有區域性資料需要關注。

函式式風格出現的另一個原因是所謂的 *混合* 語言的出現。其中一個突出的例子是 Scala 程式語言。Scala 提供了函數語言程式設計世界中的各種特性,例如高階函式和模式匹配,同時具有類似的面向物件的特徵。即使像 *for* 迴圈這樣的命令式結構也可以在 Scala 中找到,這有助於減少函數語言程式設計和指令式程式設計之間的障礙。此外,Scala 編譯成 Java 虛擬機器 (JVM) 的位元組碼,從而使兩種語言之間能夠輕鬆整合,並因此允許程式設計師逐步從一種語言遷移到另一種語言。Closure 是一種相對較新的 *通用* 語言,它也採用了編譯成 JVM 的方法。最後,最初是在強命令式原則下設計的 Java 和 C++ 現在都包含了 lambda 表示式和其他函數語言程式設計結構。

華夏公益教科書