English

大师的风格

2002-03-06 来源:中华读书报 本报记者 陆 杰 我有话说
大师是灯塔——没有他们,我们将在技术的海洋里迷航。

第一种武器

“我说的第一种武器,并不是剑,而是笑,只有笑才能真的征服人心。”——古龙《七种武器·长生剑》

当我们提到“大师”一词的时候,千万记住:如果你真正重视他的存在就一定不要肃然起敬。好!请揉一下脸,对着镜子说一声:“茄——子!”

说到Charles Petzold,谁都不会质疑他大师的地位——只要是做Windows程序开发的人都不会不知道,他的《Windows程序设计(Programming Windows)》一书是无可争议的必备宝典。“大师”是春风化雨的桂冠而不是刀枪不入的铁面具,你看——“所有的人都知道手电筒是为了孩子们藏在被窝里看书而发明的,它也适合在黑暗中用来交流。”这是Charles Petzold在《编码的奥秘(Code)》一书中为了让读者迅速理解计算机编码而讲的引子故事,当你想起自己小时候晚上躲在被窝里用电筒照着看小说而发出会心一笑的时候,实际上你已经被吸引了,这个看似不相干却给你留下深刻印象的引子会带你走进纷繁复杂的计算机编码世界,等你津津有味地读完并读懂了这本书的时候,你才会发现:里面讲述的内容竟是如此的艰深!计算机图书读起来不会像小说一样轻松,为什么不尽量让读者快乐地掌握这些更富有逻辑性的内容呢?

当我读完了一千一百多页的《Perl语言编程(Programming Perl)》的时候,我提笔在扉页上写上了“Caffeine-free!(不含咖啡因!)”。哦,不是我读得头昏脑胀把这本书当成了肉松面包或别的什么食品,写这行文字是因为这本书幽默精彩的内容让我即使在深夜读它也不需要咖啡或香烟来提神——这真是一本“绿色无污染”的书!这本书的作者是Perl语言之父Larry Wall等,他们都是在Perl领域令群雄拜服的顶级大师。Internet开放的环境中LarryWall等大师更是把自己的才华通过口吐莲花、妙语连珠的阐释充分展现出来并让读者分享。比如说带有插科打诨色彩的“如果研究历史,你可能知道RPG最早代表‘报表程序生成器(Report Program Generator)’的意思,远比它代表‘角色扮演游戏(Role Playing Game)’的意思来得早”,再比如说为了讲解在Perl中生成其他语言的多行引起,作者风趣地写道“我们常看到CGI脚本中包含了百万条print语句,每条一行。看起来就好像开着F-16去教堂一样,不过,老实说,它还真能把你带到那里……”

使人快乐的东西总能让我们无法忘怀。再举一个“准”大师的例子:Michael Barr在《C/C++嵌入式系统编程(Programming EmbeddedSystemsin CandC++)》中解释“硬件”的时候写道:“计算机系统里可以被你踢上一脚的部分。”如果解释成“计算机系统里可以通过触觉感知的部分”从语义上可能更完备一些,但这样的解释一个月以后你还能清晰地转述或讲解给别人听吗?

幽默不会损害大师的权威地位,相反恰恰是大师创造力的外在表现:很多学者认为笑的起因是无害的意外,只有创造才能够制出这样的意外、播下笑的种子。幽默能让读者更深刻地理解复杂的知识内容、给读者留下更深刻的印象——从知识传播的角度来讲,这不正是计算机图书编写的目的嘛!

大师从来都不是、也不应该是只会用二进制和你交流的科学怪物。

全面且深入

就思维作为知性(理智)来说,它坚持着固定的规定性合格规定性之间彼此的差别。——黑格尔《小逻辑》

如果大师只是逗乐解闷子的,走向极端就成了无聊的TalkShow主持人或恶俗的马戏团小丑。如果说幽默是大师作品锦上添花的“花”,完备而严密的知识体系就是锦上添花的“锦”。

计算机图书的存在是为了传播技术知识,所以需要能够深入地给读者讲明白至少一个专业领域的技术知识,大师就是能把这些东西“翻译”明白给你的人。

有一本计算机图书出版时间是1988年,可是前几天我还在FatBrain(国外最著名的技术类图书网上书店)上看到它榜上有名,这本书就是被C程序员们昵称为“K&R”的《C程序设计语言(The C Programming Language)》(著名的“Hello,world!”就始于此书),它的作者Brian W.Kernighan和Dennis M.Ritchie当然是这个领域当之无愧的大师!他们在讲解C语言编程的时候,把全书分为八个部分:入门介绍,数据类型、操作符和表达式,流控制,函数与程序结构,指针与数组,结构,输入输出,UNIX系统接口。比如说在讲解令人头疼的指针时,作者通过一个具象的内存图和系统的语言把“&”和“*”阐释得清清楚楚——实际上整本书他们只用了薄薄的272页篇幅就把C语言编程的方方面面讲解得酣畅淋漓,它被世界各国的程序员奉为C编程的圣经。

计算机知识之间盘根错节的联系着,一个MCSD(微软认证系统开发员,Microsoft Certificated System Developer)考试中的一门VisualC++就涉及到十几门基础专业课和五六门专业课,不及其余的做法往往会让读者困惑。David J.Kruglinski在《Visual C++技术内姆(Inside Visual C++)》中分为六个部分讲解了Windows-VisualC++和应用程序框架基础、MFC中的视图类、文档-视图结构、Ac-tiveX、数据库管理和Internet程序设计,把程序设计开发的方方面面都以VisualC++为中心进行了比较详细的介绍。这样的内容能够让读者系统地掌握使用VisualC++程序开发的系统知识。

如果只是处处蜻蜓点水,那我们还不如随便找一本书在上面涂满万金油——大师可不是“万金油先生”!因为他们都最起码是某个领域真正的专家,同时也没有必要东扯西扯地骗稿费。大师一定要有深度——哪怕用它来唬唬人也好啊(^_*),看看BjarneStroustrup有“C++专家自学指南”之称的《C++程序设计语言(The C++ Programming Language)》,书中充满了技术性极强的材料,处处体现出他对于软件开发和程序设计的看法,很多地方值得反复回味与思索。由于篇幅原因我在这里就不详细分解了,有兴趣的作者也可以参看拙文《不学C,无以言(下)》中的相关介绍。大师的深度有时候也体现在站在宏观高度上的见解,比如说BruceEckel的《C++编程思想(Thinking In C++)》,正如这本书的名字所说的,作者随时都在引导读者用C++的方式思考。

读者的定位

公司了解客户/用户的需求,用许多不同的产品来满足其需要。例如强生(医生、护士、病人、母亲)、AARP(50岁以上的成人)、花花公子(男人用品)和USAA(军官)。——MichelRobert《超越竞争者:战略思考的力量》

1237页的《C++ Primer》和276页的《Essential C++》同是Stanley B.Lippman讲C++的著作,何以在篇幅上会有这种判若云泥的差异?Lippman是这样解释的:“《C++ Primer》有数百页程序代码,巨细靡遗,其中甚至包括一套面向对象的文本检索系统”,它“无法扮演人们在初学C++时的导师角色,它太庞大了。……对于想立刻学会C++程序语言的人来说,这本巨著实在过于庞大复杂,这正是我动手撰写《Essential C++》的原因”。一个真正的大师在写作之前一定会认真考虑自己的书是写给谁看的——即使作者不考虑这个问题,他的编辑也一定要考虑这个问题(正如一个成功的男人背后一定有一位伟大的女性,一个成功的作者背后也一定会有一位伟大的编辑)。

满足不同类型读者需求的计算机图书内容定位不仅处于市场销售的考虑,也是出于知识传播的考虑。很多时候我们都把这样的要求挂在嘴上却并没有落实到行动中,可大师们就不一样了。比如说Wrox的图书,读者定位就是程序员,甚至他们把P2P(程序员对程序员,Programmer to Programmer)当成了商标,在这样的定位下又通常细分为“Beginning XXX”和“Professional XXX”,只要做了正确的选择,对于初学者来说不必担心内容太艰深看不懂,对于老手来说也不为一些早就熟知的内容支付额外的购买费用。再比如说O Reilly的Missing Manual系列(国内尚无中文版)就是针对软件用户需要详细的产品手册做的——这绝非有些人想象的无名小卒C&P(拷贝-粘贴)之作,本系列的作者David Pogue曾有十五本计算机图书获得过热销奖,他还在《纽约时报》上主持“David Pogue专栏”——为小的专业领域或小的读者群写书并不会丢大师的脸。

事实证明,根本就不存在包罗万象包治百病的计算机百科全书,也没有适合“从摇篮到坟墓”读者的计算机图书。即便是有,结果也会像二合一的洗发水一样尴尬——洗发的时候浪费护发素、护发的时候浪费洗发液。

古语有云:“刍荛之言,可择庙廊”,对我上述的观点有什么看法随时欢迎读者和我交流(johnlul@yeah.net)——我是“夸固欣然辨亦喜”。

手机光明网

光明网版权所有

光明日报社概况 | 关于光明网 | 报网动态 | 联系我们 | 法律声明 | 光明网邮箱 | 网站地图

光明网版权所有