意大利的名画家乔尔乔内,本名其实是巴巴雷里(Barbarelli);大家看他个子高,就以“大个儿(giorgione)”呼之。久而久之,这个诨名“乔尔乔内/Giorgione”倒成了他的真名实姓,提起“巴巴雷里”,怕是只有艺术史学家才明白了。
人有诨名绰号,是旁人亲昵或爱戴的流露。与此相仿,很多经典计算机教材也被大家冠以诨名,有些甚至也出现了“乔尔乔内效应”——读者都快忘了该书的全称,但人人一提起那个绰号,都能了然于心,不需词费。
朱丽叶对罗密欧说过:名字有什么打紧,即使罗密欧不叫罗密欧也同样会“保持他的优秀”。但在教材来说,也许诨名就是对作者成就的最高肯定,甚至胜过各种人为的奖项。教材有了诨名,说明它已经成为学生和工程师的良师益友;在他们的日常实践中,这样的教材是习焉不察、而又不可或缺的一部分。有几部经典教材的诨名,甚至已经在整个计算机工业的无数从业者心中扎根,它们是内行人之间的行话、切口,是“计算机文化”的重要粘合剂——今天,咱们就谈谈这么几部带诨名的经典。
不少诨名得自原书封面,比如“灰姑娘书”,说的就是图灵得主Hopcroft等人的名作《自动机理论、语言和计算导论》(Addison-Wesley,1979,清华大学出版社2002年影印了第2版)。本来书名实在拗口,要不是内容了不起,恐怕会拒不少读者于千里之外;但聪明的读者们不仅没有被这个原名吓倒,反而从封面上找到了解决之道:该书初版的封面也确实吸引人——画的是一个小女孩儿,拼命地从一个古怪装置上拉一条绳子(那个恶魔般的装置上赫然写着“NP完全问题”)。对,就叫它“灰姑娘书”吧!这个名字在读者中不胫而走,每个人刚拿到这本书,看着那小女孩儿的认真样儿(封底上画着她把那个劳什子弄得一团糟),都不禁对“灰姑娘”这个称呼会心一笑。
该书甫一问世就成了这个领域最权威的教材,20多年的工业发展都未能撼动灰姑娘的地位。但经过时代变迁,“自动机理论”逐渐从研究生科目落到了本科生的课程表里。为了让学生们好过一些,作者们推出了难度降低、涉及面减小的第二版。不想读者们根本不领情——老师和学生都说还是第一版内容充实,说第二版删掉了一些关键内容,还说作者们为了显得“易懂”,有些地方竟改得口罗嗦了。在我看来,这些抱怨都有道理,但很可能大家的腹诽更多地是为了封面:灰姑娘不见了,取而代之的是蓝黑过渡的底色上的状态机图案。这不能不让念旧的老读者沮丧。抱怨在所难免,而对所有人来说,无论封面怎样,这本书还是“灰姑娘书”。
另一部因封面得名的书是“龙书”,也就是Aho等人所著的《编译原理技术与工具》(Addison-Wesley,1986,人民邮电出版社2002年影印版)。Aho是ACM会员奖得主,还与上述Hopcroft合著过《数据结构与算法》等名作,但他最了不起的著作恐怕还是这一部。所谓“龙书”,说全了应该是“屠龙宝书”,因为封面上画着一条红龙和一位骑士。西方人眼里,龙都是恶龙,是妖邪之物,而这条龙身上却写着“编译器设计复杂度”的字样!那么骑士又会用何种法宝迎战呢?只见他披着“数据流分析”铠甲,挟着“LALR分析器生成器”长剑,正忙着在一台终端前输入呢,敢情是个高科技武士!这部“龙书”,人人谈起都要皱眉,列出一堆牢骚(概念定义不清晰呀,多位作者分工不明确呀),但没人能绕过它谈编译原理:毕竟“编译器设计”这条恶龙太歹毒,而此书还是屠龙的最佳指南。有意思的是,该书3位作者中的两位此前还合作过另一本《编译器设计原则》,封面上同样是对峙的恶龙和勇士,只不过那时他们还没开打,仅仅怒目相向而已。为了区别,人们把早先的这本称为“绿龙书”,而后来名声更大的还是“红龙书”。从绿龙到红龙,从怒视到交手,也许封面上的冲突程度也体现了编译器领域的研究进展吧。
如果在编程语言课上有人说到了“旧约”、“新约”,大家用不着以为这是在讨论信仰问题。这里的“圣经隐喻”,指的无非是编程语言的圣书,Kernighan和Ritchie写的《C程序语言》(也被按作者称为“K&R”),而所谓旧、新约,不过是该书的初版(Prentice-Hall,1978)和第二版(Prentice-Hall,1988,清华大学出版社2000年影印版)。Kernighan是上述Aho在贝尔实验室的同事,甚至还共同发明了另一门语言AWK(他们俩分别是其中的A和K),但谈到对C语言的贡献,Kernighan却连忙撇清自己:“Ritchie发明了C语言,没我什么事,句号。”那么这部圣经呢?它的雏形是Kernighan给贝尔的同事们写的一份教程。后来,Kernighan索性“拧着Ritchie的胳膊”,和这个原创者一起完成了全书。ANSIC标准形成后,两位作者又把该书更新到第二版。虽然Kernighan总在称赞Ritchie这位合作者和图灵奖得主(“Ritchie的文章绝了,我们俩写的段落放在一起高下立判”),但其实他本人在C语言发展中的作用也难以抹煞——我们知道,“旧约”出版的几年后,实验室里他负责的那个部门来了一个叫Stroustrup的年轻人;我们还知道,这个年轻人后来发明了C++语言。
既然在计算机课上“圣经”未必有宗教含义,那么“四人帮(GoF)”也往往另有所指。这说的是划时代的软件开发专著《设计模式》(Addison-Wesley,1995,机械工业出版社2002年影印版)。GoF指的是四位作者Gamma、Helm、Johnson和Vlissides。当年他们还是声名未彰的软件开发者,而本书一炮打响后,这四位都成了名重天下的大师。说起他们能结成“帮派”,并最终成书,简直近乎不可思议:在写作该书时,四人分散在北美大陆的不同角落:魁北克、伊利诺斯、纽约、加州,Vlissides甚至愿意用“3个时区”强调他们地理分布上的跨度。未来的大师们主要通过当时刚刚时兴的电子邮件交换意见,有时候,他们发现距离对这样复杂的写作可能也是一种优势:大家要考虑成熟再发表想法;而当东部的同事早已丢下问题蒙头大睡时,西部的某个同事还能拾起难题,从他止步的地方重新开始。“设计模式”对软件行业的影响无法低估,很多幼稚的开发者甚至言必称“模式”或“GoF”,殊不知这四位老友现在比当时更加天各一方(Gamma、Helm分别回了瑞士、澳大利亚老家),大家至今也只是在会议上碰过几次面而已。
谈到这里,如果您是一位雄心勃勃的作者,也许您已经大致明白了构成名著的要素:最好是有奇特的封面,要不就得找到有趣的合作者,再不,还可以在版次方面下功夫——这样八成能够促成一个响亮的外号,作品的知名也指日可待。可是,如果“巴巴雷里”先生画不好画儿,恐怕个头儿再高也没法成为艺术史上的乔尔乔内;同样,要是您的大作里没有“干货”,再响亮的诨名怕也只是个玩笑吧。