英国著名计算机科学家、微软首席研究员及 Haskell 编程语言主要贡献者 Simon Peyton Jones 在一次访谈中说,函数式编程语言的时代已经来临。
函数式编程语言不同于大多数人所熟知的编程范式,它没有了维护全局状态的麻烦,只需要将输入数据传给函数,然后等待输出结果,就这么简单。
Simon 说,“大部分编程语言都是命令式(imperative)的,程序员需要告诉代码先做什么再做什么。而函数式编程语言则不然,它会直接告诉程序员输出的结果是什么。比如 Excel 表格里的方程式,它并不包含一系列的步骤,它只会告诉你某个格子经过计算之后的值是多少”。
Simon 认为,函数式编程语言是开发者验证新想法的有力工具,比如 Haskell。他说,“函数式编程语言有一颗智慧的心,它易于驾驭,只要你善于驾驭它,它就能助你一臂之力”。
在过去几年,函数式编程语言的很多语言特性已经被其他编程语言所模仿,而函数式编程语言领域的新想法也如雨后春笋般不断涌现。
函数式编程语言 Haskell 和 OCaml 几乎成为新想法的摇篮,它们当中有一些已经成为主流编程语言的一部分。垃圾回收和参数化多态就是其中最好的例子。Java 的泛型是在 2000 年初引入的,但它在函数式编程语言中早已存在了 20 年。Linq 的设计思想直接来自 Haskell,F#的 workflow 设计灵感则来自 Haskell 的 monadic I/O story。
随着摩尔定律的放缓,计算机用户开始更多地依赖软件能够并行地运行于多个核芯片之上,以此来获得更快的处理速度。毫无疑问,函数式编程语言特别适合用于并行执行,因为它们很少有机会发生崩溃。
Simon 说,“在使用函数式编程语言时,可以通过避免运算单元之间发生交互来实现并行运算。这就要求程序员对程序各个部分之间的交互细节了如指掌,从而降低 bug 出现的几率”。
函数式编程语言的市场仍然相对较小,但毕竟已经存在了 27 年,它们的用户群还是很强大的。很多公司也开始使用函数式编程语言,比如,Facebook 就在用 Haskell 进行垃圾过滤,而 Bloomberg 和谷歌也在使用 Haskell。
Simon 说,“编写软件最主要的一方面就是要管理好复杂性,而唯一能够阻碍写出好软件的就是我们管理复杂性的能力。函数式编程语言为我们提供了最有力的工具用于管理复杂性,这是命令式编程语言无法比拟的”。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论