从编程语言的进化这个视角来看,其实最近并没有什么大的动作。现在使用最广泛的编程 语言几乎都是10 多年前出现的,即便是比较新的Java 和Ruby 也是诞生于20 世纪90 年代后半, 距离现在也已经是15 年之前的事了。也许可以说,现在正是编程语言进化的好时机吧。

最近,受到CPU 多核化等因素的影响,Erlang 1这种并行处理语言受到了不少关注。不过 Erlang 早在1987 年就诞生了,也并不是什么新东西,有点失望呀。

1Erlang 是由瑞典电信公司爱立信(Ericsson)旗下计算机科学研究室所开发的一种编程语言,发布于1987 年, 并于1998 年实现开源。

那么,未来的编程语言究竟会变成什么样呢?

美国风险投资家、Lisp 启蒙家、作家保罗·格雷厄姆在其《一百年后的编程语言》2一文中 想象了100 年后可能会出现的编程语言,并提议将他的观点应用到现在的编程语言中。

2保罗• 格雷厄姆(Paul Graham,1964— )是美国风险投资家、计算机科学作家。《一百年后的编程语言》(The Hundred-Year Language)一文收录于保罗• 格雷厄姆的文集《黑客与画家》一书中,人民邮电出版社2011 年4 月出版,阮一峰译。

他主张,100 年后的编程语言进化的主线,应该以少量公理为基础的“拥有最小最简洁核心的语言”。在现有编程语言中,最具有这一特征的莫过于他最喜欢的Lisp 了。所以说,他的 主张实际上就是说,Lisp 才是100 年后编程语言的进化方向。

唔,像我这样的小人物要跟他叫板好像也挺不自量力的,不过我还是认为,对于未来,应 该基于从过去到现在的变化方向,并在其延长线上做出预测。当然,将来也许会发生一些无法 预料的状况,从而大幅扭转之前的前进方向,不过这样的事情从定义来说本来就是无法预测的, 你非要预测它,本质上也是毫无意义的。

作为一个编程语言御宅族,通过反观过去半个世纪以来编程语言的进化方向,我认为编程 语言绝对不会按照保罗·格雷厄姆所说,向着“小而干净”的方向来进化。现在的编程语言, 无论是功能上还是语法上都已经不是那样单纯了,虽然也曾经有人努力尝试将这些语言变得更 小更简单,但包括保罗·格雷厄姆自己所设计的Arc 3在内,都决不能算是成功的尝试。

3Arc 语言是Lisp 的方言之一,由保罗• 格雷厄姆与罗伯特• 泰潘• 莫里斯(Robert Tappan Morris,1965— )共 同设计,于2008 年首次发布。

在我看来,编程语言的进化动机,不是工具和语言本身的简化,而是将通过这些工具和语 言所得到的结果(解决方案)更简洁地表达出来。近半个世纪以来,编程语言不断提供愈发高 度的抽象化特性,也正是为了达到这个目的。因此我们可以很自然地认为,这种趋势在将来也 应该会继续保持。

基于上述观点,如果要我来预测100 年后编程语言的样子,我认为应该会是下面三种情况 的其中之一:

(1) 变化不大。编程语言的写法从20 世纪80 年代开始就几乎没有什么进化,今后即便出现 新的写法,也只是现有写法的变形而已。(从发展上来看,是比较悲观的未来)

(2) 使用编程语言来编程这个行为本身不存在了。人类可以通过和计算机对话(大概是用自 然语言)来查询和处理信息。(类似《星际迷航》中的世界,对于编程语言家来说是比较失落的 未来)

(3) 发明了采用更高抽象度写法的编程语言。这种语言在现在很难想象,不过应该是比现在 更加强调What,而对于如何解决问题的How 部分的细节,则不再需要人类去过问。(难以预测 的未来)

当然,上面的预测也只不过仅仅是预测而已,有可能与未来的实际情况大相径庭,或者说, 与实际大相径庭的可能性比较大吧。不过话说回来,100 年后我也已经不在这个世上了,这不 是白操心嘛。

本文摘自即将在5月末上市的《代码的未来》