函数式编程语言时代已经来临
英国著名计算机科学家、微软首席研究员及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说,“编写软件最主要的一方面就是要管理好复杂性,而唯一能够阻碍写出好软件的就是我们管理复杂性的能力。函数式编程语言为我们提供了最有力的工具用于管理复杂性,这是命令式编程语言无法比拟的”。