第2版 代序

要有光

—《世界需要一种什么样的语言》节选—

什么才是决定语言的未来的思想呢?或者我们也可以换个角度来提出这个问题:世界需要一种什么样的语言?

特性众多、适应性强,就是将来语言的特点吗?我们知道,现在的C#与Java都在向这一目标前进。与特定的系统相关,就是语言的出路吗?例如,曾经的VC++,以及它面向不同平台的版本。当然,在类似的领域中,还有C,以及汇编……

这些列举其实都是在特定环境下的特定语言,所不同的无非是环境的大小。这其实也是程序员的心病:我们到底选Windows平台,还是Java平台,或者Linux系统,再或者是……我们总是在不同的厂商及其支持的平台中选择,而最终这种选择又决定了我们所使用的语言。这与喜好无关,也与语言的好坏无关,不过是一种趋利的选择罢了。所以也许你在使用着的只是一种“并不那么‘好’”,以及并不能令你那么开心的编程语言。你越发辛勤地工作,越发地为这些语言摇旗鼓噪,你也就离语言的真相越来越远。

当然,这也不过是一种假设。但是,真相不都是从假设开始的吗?

语言有些很纯粹,有些则以混杂著称。如果编程世界只有一种语言,无论它何等复杂,也必因毫无比较而显得足够纯粹。所以只有在多种语言之间进行比较,才会有纯粹或混杂这样的效果:纯粹与混杂总是以一种或多种分类法为背景来描述的。

因此我们了解这些类属概念的标准、原则,也就回溯到了语言的本质:它是什么、怎么样,以及如何工作。在这本书中,将这些分类回溯到三种极端的对立:命令式与说明式,动态与静态,串行与并行。分离它们,并揭示将它们混沌一物的方法与过程,如历经涅槃。在这一经历中,这本书就是我的所得。

多年以来,我在我所看不见的黑暗与看得见的梦境中追寻着答案。这本书是我最终的结论,或结论面前的最后一层表象:我们需要从纯化的语言中领悟到编程的本质,并以混杂的语言来创造我们的世界。我看到:局部的、纯化的语言可能带来独特的性质,而从全局来看,世界是因为混杂而变得有声有色的。如果上帝不说“要有光”,那么我们将不能了解世象之表;而世象有了表面,便有了混杂的色彩,我们便看不见光之外的一切事物。我们依赖于光明,而事实是光明遮住了黑暗。

如同你现在正在使用的那一种、两种或更多种语言,阻碍了你看到你的未来。

周爱民

2009年1月于本书精简版序