译者的话
这里介绍给读者的,是丹尼尔·弗里德曼 (Daniel P. Friedman) 教授的著作。
弗里德曼教授的著作,除了早年论文以及“小人书”系列 (The Little Schemer 及其它)之外,译者所见,尚有《编程语 言要素》(Essentials of Programming Languages,简称 EoPL)和《Scheme 与编程艺术》 (Scheme and the Art of Programming)。这些书中,当属 《编程语言要素》和 《Scheme 与编程艺术》最具教材性质。两书所述话题既多,行文又平白易懂, 读者循着作者铺就的道路漫步,自能一窥编程语言的门径。较晚出的“小人 书”系列,虽然是夫子自道,却有柏拉图对话录的意味。每本专涉一个主题, 薄薄一本,不像市面上常见的计算机书籍,动辄千页。但是每一本都言简意赅,值得反复阅 读。
The Little Schemer 因为用新颖(就计算机科学来说)的形式讲授最基本的 计算机科学原理,早成为同类图书中的名著。不过这类图书似乎像夹生牛排一样,不大对我 国读者的胃口,所以它的翻译和引进,还是近几年的事,是否引起消化不良,大概仍待观察。 至于之后讲逻辑编程的 The Reasoned Schemer,讲设计模式的 A Little Java, A Few Patterns,讲定理证明的 The Little Prover, 讲依赖类型 (dependent types) 的 The Little Typer,更乏人问津。 这也许不能怪读者:这些著作所涉的主题,本来就鲜有广泛传播的中文译著(设计模式除 外)。作者不过是将它们反刍提炼,以简洁而富有创造性的方式加以介绍。既然这些图书的 主题,本不为人所熟知,又不像热门技术一样,堪做高薪职位的敲门砖,怎能期望读者对它 们发生兴趣呢?
同样的理由,却不适用于《编程语言要素》。如果说编程语言世界是一座无尽 宽广的城堡,“小人书”系列就是介绍城堡中设计最精巧的房 间;EoPL 介绍的,是造城堡用的砂石。房间的布局装饰往往变化很快,造房 间用的砂石变动得却极慢。虽然新的编程语言仍在源源不断地设计出来,本书介绍的大多数 概念仍将存在于许多望得见望不见的编程语言之中。即使读者并不打算做计算机领域的 “泥瓦匠”,仔细阅读本书,仍能对众多习见的概念加深理解。
尽管计算机科学也称科学,从大量流行的书籍之中,我们很难看到它的科学性自何而来,读 过本书,我们能够清晰地看到:看似淆乱的编程语言世界背后,也存在某些牢固的运行规律。 如同地心说给人带来的困扰一样,违背这些规律,将给编程语言的用户带来无穷的麻烦。理 解它们,就能更轻松地理解一门编程语言。而这样的理解,势必能消除许多无谓的争论。
说起争论,本书出版已有三十年。三十年间,无数的争论来了又去了,本书却从未能在中国 找到它的读者。它今天就能吗?天暗下来,大风如酒,绯红的晚霞从苍郁的树木后直升起来, 满路汽车唱着急促的歌谣,像是催着我,快点将这本书译出来。虽仍抱着这样的疑问,我还 是愿意把这本书介绍给读者。