从冯·诺依曼风格中解放编程?一种函数式风格及其程序代数
John Backus
IBM Research Laboratory, San Jose
传统编程语言变得越来越庞大,但并没有变得更强大。在最基本层面固有的缺陷使它们既臃肿又弱小:它们从共同祖先——冯·诺依曼计算机继承而来的原始逐字编程风格,它们将语义与状态转换紧密耦合,它们将编程划分为表达式世界和语句世界,它们无法有效地使用强大的组合形式从已有程序构建新程序,以及它们缺乏用于推理程序的有用数学性质。
一种替代性的函数式编程风格建立在使用组合形式创建程序之上。函数式程序处理结构化数据,通常是非重复和非递归的,以层次方式构造,不命名其参数,并且不需要复杂的过程声明机制即可具有普遍适用性。组合形式可以使用高级程序构建更高级的程序,这种风格是传统语言所无法实现的。
与函数式编程风格相关的是一种程序代数,其中变量的取值范围是程序,其运算是组合形式。该代数可以用于转换程序,并求解其“未知量”为程序的方程,其方式与高中代数中转换方程的方式大致相同。