函數級編程
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
在電腦科學中,函數級(Function-level)編程,指稱John Backus在他的將程式作為數學對象來研討的著作中標識出的兩種對立程式設計範式之一,另一種是值級(Value-level)編程。在Backus研究並出版他自己的函數級風格編程之時,他的提議在很大程度上被誤解為支援傳統的函數式程式設計[1]。
概述
Backus在他的1977年圖靈獎獲獎演講中,闡述了為何他認為在程式語言設計中需要切換到一種不同的哲學[2]:
程式語言似乎遇到了麻煩。每種後續語言,雖做了一點清理,都合併了它的前任們的所有特徵,並加上了更多的特徵。[...] 每種新語言都宣稱了新的和時尚的特徵... 但是明顯的事實卻是,很少有語言使編程者能足夠廉價或更加可靠的去驗證生產和學習使用它們的代價是值得的。
他設計的FP語言成為了第一個專門支援函數級編程風格的程式語言。函數級程式是無變數(variable-free)的,也叫無點編程,因為程式變數在函數級程式中是不需要的,而它在值級定義中是根本性的。
與之對立的值級編程,Backus最初使用術語「對象級編程」,但是現在這麼稱呼可能會混淆於物件導向程式設計。值級程式是描述如何組合各種「值」(比如數、符號、字串等),形成其他的值直到獲得最終的「結果值」的程式。通過應用各種從值到值的函數比如加法、串接、逆矩陣等,從現存的值構造新的值。
在常規上,馮·諾依曼程式語言都是值級的:在賦值陳述式右側的表達式專一的關注建造接着要儲存的一個值。基於Lambda演算的語言(比如Lisp、ISWIM和Scheme),在實際實踐中都是值級語言,儘管它們不會因而在設計上的受到限制。
參見
參照
- ^ Hudak, Paul. Conception, evolution, and application of functional programming languages. ACM Computing Surveys. 1989, 21 (3): 359–411. doi:10.1145/72551.72554.
- ^ Backus, John. Can programming be liberated from the von Neumann style?: A functional style and its algebra of programs (PDF). Communications of the ACM. 1978, 21 (8): 613–641 [2020-04-20]. doi:10.1145/359576.359579. (原始內容存檔 (PDF)於2018-08-19).
外部連結
- Closed applicative languages, FP and FL (頁面存檔備份,存於互聯網檔案館), in John W. Backus (Publications)
|