函数级编程

在电脑科学中,函数级(Function-level)编程,指称John Backus在他的将程序作为数学对象来研讨的著作中标识出的两种对立编程范型之一,另一种是值级(Value-level)编程。在Backus研究并出版他自己的函数级风格编程之时,他的提议在很大程度上被误解为支持传统的函数式编程[1]

概述

Backus在他的1977年图灵奖获奖演讲中,阐述了为何他认为在编程语言设计中需要切换到一种不同的哲学[2]

编程语言似乎遇到了麻烦。每种后续语言,虽做了一点清理,都合并了它的前任们的所有特征,并加上了更多的特征。[...] 每种新语言都宣称了新的和时尚的特征... 但是明显的事实却是,很少有语言使编程者能足够廉价或更加可靠的去验证生产和学习使用它们的代价是值得的。

他设计的FP语言成为了第一个专门支持函数级编程风格的编程语言。函数级程序是无变量(variable-free)的,也叫无点编程,因为程序变量在函数级程序中是不需要的,而它在值级定义中是根本性的。

与之对立的值级编程,Backus最初使用术语“对象级编程”,但是现在这么称呼可能会混淆于面向对象编程。值级程序是描述如何组合各种“值”(比如数、符号、字符串等),形成其他的值直到获得最终的“结果值”的程序。通过应用各种从值到值的函数比如加法、串接、逆矩阵等,从现存的值构造新的值。

在常规上,冯·诺依曼编程语言英语von Neumann programming languages都是值级的:在赋值语句右侧的表达式专一的关注建造接着要存储的一个值。基于Lambda演算的语言(比如LispISWIMScheme),在实际实践中都是值级语言,尽管它们不会因而在设计上的受到限制。

参见

引用

  1. ^ Hudak, Paul. Conception, evolution, and application of functional programming languages. ACM Computing Surveys. 1989, 21 (3): 359–411. doi:10.1145/72551.72554. 
  2. ^ 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). 

外部链接