函數級編程
在計算機科學中,函數級(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)