而对2003年IT图书的回顾,也就不过是对这位读者的一次定位和描摹,所谓“IT图书”,或许只能定义为他的阅读、思索、实践过程中的一些借用品或衍生物。那么,伴随着“IT读者”的种种阅读、思索和实践,在这一年中究竟发生了些什么?
《人件》(第二版) 作者:Tom DeMarco,Timothy Lister 译者:UMLChina翻译组 清华大学出版社出版
也许首先该考证清楚的是,谁才是这位可敬的“IT读者”。听起来他更像大家脑海里的一个幻影,其中虚构远多于实在。为了给这个影子定型、补上血肉、让他变成触手可及的活人,人们没少下心思猜度:在他们眼里,他应该很精明,却又很虚浮;很实干,却又很懒惰;很爱钻研,却又不求甚解;热衷逐新,但又故步自封。媒体和出版者为了试探他的口味,已经轮番试过了糖豆和苦药、粗粮和稀粥,但最终不得不自承对他所知甚少。其实又何止媒体和出版者,就是IT行业的管理者和开发者们自己,也总会因为对自身缺乏理解吃尽了苦头。
从这个角度入手,IT管理名著《人件》试图讲出IT企业中“人”的实情。该书的两位作者作为资深软件开发方法论专家,曾经调研、分析过多个大型软件企业、项目的运营机制,并开设过专门的研究项目,对软件开发者在不同工作环境下的生产力进行了周密的定量实验。他们是软件业的第一批社会学家,这部《人件》也因为总结了他们多年的卓越研究而弥足珍贵。
但是,让读者们不太自在的是,《人件》的写作风格和具体结论都很有些离经叛道,与作者们此前的实证论述颇不相类。联想到该书初版于16年前,我们不得不为其中包含的革命性而瞠目。记得在其中的一章里,作者们介绍了他们创办的那间公司的办公室布置:这是纽约艺术家聚居的格林威治村,一家杂货铺的顶楼,其中一半是在室内,另一半则是供员工讨论、休闲的露台。我想象,作者们一定就是在那片露台上完成本书的:丢掉了“业界权威”的正装和眼镜,换上了一副波希米亚风格的叛逆者行头,他们在书中的语调、建议往往也沾上了格林威治村特有的气味——轻松、富有想象力,但还有点儿愤世嫉俗,有点儿不切实际。
《程序开发心理学(银年纪念版)》 作者:Gerald M.Weinberg 译者:邓俊辉 清华大学出版社出版
作为新兴帝国的软件业,其发展之迅猛,好比是科幻电影里那个一夜长大的小孩子,徒有一副成人的身形,可举手投足还总是透着黄口小儿的幼稚。本书的作者Weinberg讲过自己在1944年(那时他11岁)读到《时代》周刊上介绍“电脑”的文章——他从那一刻起就决心作一个“电脑人”。今天,仅仅北美就已经有了200万以上的软件开发者,但如果我们自忖自己对这个行业的认识,那又能比那个满怀对“电脑人”的憧憬和梦想的男孩超出多少呢?无论如何,几十年后的男孩真的走进围城,探知了“电脑人”的全部奥秘。《程序开发心理学》就是这样一部兼具赤子情怀和老兵甘苦的作品。本书第一版问世早于《人件》17年,也就毫无疑问地被这个领域的研究者们奉为圭臬。
在巨人林立的技术出版界,纽约的Dorset House出版社似乎只能是个阴影里的小个头儿。但有了DeMarco、Lister(我们记得这两位《人件》作者)和Weinberg的加盟,Dorset House也俨然成了产量小精品多的名牌出版商。细说该社的这几位台柱,著述风格又算得上各有千秋。DeMarco们是不可多得的鬼才,写技术文章好玩儿得像小说,写小说(我们知道“第一部项目管理小说”《最后期限》就是DeMarco的手笔)又耐人寻味得像技术文章;与他们有时略显过火的精灵古怪相比,Weinberg则是长袖善舞的通才,他以自己的写作命名了技术作家中的文艺复兴风格。他的文笔既含蓄又透彻,既帅气又体贴;理路与修辞、技术和人性在他笔下重归于好、喜结连理。对于时而虚火旺盛,时而理路干枯的分离型技术人格来说,这些作品中传出的强劲气息意味着不可多得的治疗与救赎。
《Borland传奇》 作者:李维 电子工业出版社出版
技术论著的作者需要——如果不是更需要的话——想象力,需要冲破细节和碎片的包围、在读者心中点亮明灯的“智慧”。以下还要讲到的Martin Fowle r、Bob Martin和上面说过的Weinberg等作家,他们的过人之处正在于作品中浑厚、清晰的感受力;而李维先生这部讲述著名软件厂商成长史的《Borland传奇》,也昭示了汉语技术写作在这个方向上能达到的深度。
很多人错误地假设,网络发表和杂志连载会降低图书销量。《Borland传奇》本来是网上论坛的系列文章,又曾在内地《程序员》杂志连载多期,但结集出版后依然洛阳纸贵——也许这倒并不构成上述假设的反例,因为李维的这部作品实在太过优秀。软件开发这项完全发生在人脑中的、最抽象的人类活动,经过李维娓娓道来,却绘影绘形,简直是眼前放映了好莱坞战争片那样摄人魂魄——这不正是“像感受玫瑰的香味一样感受抽象的思想”吗?
作者在书中透露,本书的实际写作虽然始自2000年的论坛文章,但早在距此七、八年前,他曾就职的一家公司的副总裁,就“要求我除了开发产品和技术之外,每个星期必须完成一种对于未来市场、产品和技术趋势的意见报告”。而今回顾,“也就是从这个时期开始培养了笔者思索这些问题的习惯”。由此说来,作者观察技术走势的深湛眼光、描绘技术竞争的卓越笔力都是长期研磨、锻造的成果。最近我和朋友们的交流中,不少人都期许内地能够迅速涌现一批优秀的技术作者——如果我们参照李维先生的经验,也许这仍须俟以时日吧。
《重构》 作者:Martin Fowle r 译者:侯捷熊节 中国电力出版社出版
接着上面的意思,如果说孵化国内优秀作者有什么窍门的话,那么也许“从翻译入手”能算作其中的一个。虽然对比IT专家的平均收入,国内付给译者的稿酬颇让人猜疑——负责任的译者们工作是不是纯粹出于“宗教热情”?但抛开直接报酬,翻译工作的首要受益者仍是译者本人:这项任务迫使他直面处在技术与思想最前沿的原作者,展开一场内在的、严厉的对话,不可放过哪怕是一点儿含混模糊的地方。如果他认真对待译文(和他自身),他也就很可能成为在该领域用汉语思考和表达最深入的一个人。因此,每当我读到体贴、严谨的译文,我也都能从中听到国内同行奔向技术前沿的足音。
就是为此,我们也应该感谢以侯捷先生为代表的一批译者多年来的带动作用。他们的努力,使译著脱离了被若干老鼠会式的工作室把持的猥琐局面,使技术翻译的实践具有了某种程度上的本体意义。毫无疑问,“译者”地位的这种凸显,能在整条产业链中形成“三赢”局面:读者得以在流畅的汉语气息里体会技术思想,并借此降低机会成本,减小错漏和曲解带来的痛苦和困扰;出版商能够更轻易地树立起高质量品牌,提高客户的认知度和凝聚度;而译者个人则获得了业界宝贵的注意力。
回到原书本身,作者Martin Fowler是当前软件研发领域最有影响力的人物之一,他所主持的咨询公司Thought-works网罗了美欧两地的大量英才,被认为是业界的一种隐形主宰力量。谈一件专业论坛里发生的趣事:两个人就面向对象原则展开了讨论,但其中的一人突然发现对方的邮件地址属于Thought-works公司,不由得懊悔不已:“我居然教一个Martin Fowler的同事什么是面向对象——这简直就是对着唱诗班布道,在大江边上卖水了。”
而Fowler本人的声名,在很大程度上就建筑于本书。“重构”作为一种技术实践当然并非始自Fowler,但正像《设计模式》的作者们也曾自承,他们的著作只不过是对业已存在的实践总结和命名,Fowler的过人之处也就在于这种技术洞察力:经过他的点化和阐明,很多人原本日用而不自知的“重构”萌芽,长成了成熟而光彩四溢的一整套研发理念和指导原则。折服于Fowler卓越的表达力,我在读他的论著时总想到《创世纪》中那个著名段落:初人亚当第一次给万物命名,“那人怎样叫各样的活物,那就是它的名字。”Martin Fowler也近乎是自己领域里的亚当;对这样一种神奇的“命名能力”而言,也许“发明”和“发现”其实是同一回事。
《敏捷软件开发:原则、模式与实践》 作者:Robert C. Martin 译者:邓辉 清华大学出版社出版
本书的问世,似乎也是一个漫长、曲折的过程。书中的一幅漫画,图解了大家对这部耳闻已久的著作的渴待:一位来自大出版商的女编辑指着作者Bob Martin抱怨,“Bob,你去年就答应写完那本书了。”图中标明,这个尴尬的场面发生在1999年,但其实这本书将要推出的消息还在此前好几年就预告了出来。经过四次以上的书名更换,Bob大叔终于配合风行一时的“敏捷运动”把书名定为《敏捷软件开发》。而他似乎也觉得多年酝酿的文档、资料已经开始发出醉人的香味。于是我们在2002年等到了这部成名早于出版的大作。也就在当年,美国《软件研发》杂志把图书类的“震撼”大奖颁给了一贯低调的M artin。
经过这些年的素材积累,本书简直像一座不断扩建的古城,涉及的主题惊人地丰富,四下都散落着难以估价的珍宝。正如副标题“原则、模式与实践”所暗示的那样,书中至少涵盖了面向对象原则、设计模式、极限编程方法论这三个方面,其中的任意一个都已经足以构成比这厚得多的专著。但这本书的主要价值却并不在于它的广度,也不在于其中的任何稀有资料(如果熟悉Martin本人的网站,我们甚至可以在那里找到书中很多具体论述的初稿),而在于标题中排在最后的“实践”二字。实践是贯穿全书的核心智慧,通过引入大量的应用场景和实例,Bob大叔不仅把知识的利刃交到读者手中,还确保了读者真正在仿真环境中掌握了这利刃的用法和禁忌——以我看来,通过了入门阶段的开发者,如果不主动寻求这种基于“最佳实践”的“智慧”,那么也就很容易成为自己刚刚掌握的知识的牺牲品,在此后永远重复着这样的入门——淘汰的循环。恰恰是在这里,M ar tin的作品构成了开发者能力提升的最佳导引。
《Design by Contract原则与实践》
作者:Richard Mitchell,Jim Mckim
译者:孟岩
人民邮电出版社出版
“人贵有自知之明,我们知道这本书不是那种能让您在冬天的火炉旁,或是夏天的游泳池边悠闲地阅读的书。”本书中的这段儿作者自白似乎适用于大部分技术专著,但每读到这里,作者语气中流露出的自省和亲切还是令人不禁微笑。为什么一本“契约式设计(Design by Contract)”专著的作者特别需要“自知之明”呢?这样一番“丑话说在前面”式的警告,究竟是出于哪种顾虑、哪一道暗影呢?
也许,契约式设计这种软件研发范式自身的遭遇,可以部分地解释上述开场白的由来。作为面向对象方法论的一个重要流派,契约式设计从问世以来,似乎从未真正得到业界主流的青睐,它的大师们(包括它的创始人——也是本书的序言作者——Bertrand Meyer和本书的两位作者)大多栖居于学院,它的实现又往往依托于一门专门的程序语言Eiffel。受制于以上两种无形的隔阂,再加上很少获得主流厂商的商业支持,契约式设计简直成了永远“养在深闺”的美人;即使Eiffel和它的开发利器EiffelStudio的功能再优雅、高效,拥趸们的推崇再热烈,普通开发者们还是畏于其中隐含的陡峭学习曲线,不敢上前去与美人调笑、亲近。因此,上面所谓“人贵有自知之明”、“我们知道”云云,听起来真像极了落寞美人的一声不乏幽怨的叹气。
但所谓“天生丽质难自弃”,这样一种优秀的研发范式,当然也不会甘于沦为只会叹气的“怨女”。本书就是“契约式设计”向其他开发社群发出的善意自荐。书名原本是更亲切的“Design by Contract by Example”——“通过实例了解契约式设计”(中译者选用现在这个标题,也许是为了向他心仪的Robert Martin致敬);书中也确实贯穿了“借实例讲解”的论述方式,甚至有一整章都放下了Eiffe l语言的架子,改用预处理器iContract加上大家喜闻乐见的Jav a语言图解契约式设计的要点。难怪不少读者承认这本书切实让他们入了门,至少明白了书写“断言”的基本原则。
译者孟岩曾完成过C++语言的多部经典著作的翻译,本书的中译又体现出他对“契约式设计”的虔诚和一往情深。尤有价值的是,附录部分给出了孟岩本人对C/C++语言实现契约式设计的若干建议和告诫。毫无疑问,这是译者在新欢旧爱之间的一次沟通尝试。
《编译原理》 作者:Alfred V. Aho,Ravi Seth i,Jeffrey D. Ullman 译者:李建中姜守旭 机械工业出版社出版
“龙书”(《编译原理》的昵称)终于有了中译本,单单是这个消息就让这部巨著的爱好者们欣喜不已,何况,中译者是哈尔滨工业大学的资深教授,所得的译作一定不会辜负原作的名望,再加上今年还是该书的主要作者A lfred Aho教授获得IEEE冯·诺伊曼奖的年份——那么译本的迟到反而像是特意安排的致意了。
一部介绍具体技术的专著,居然在初版17年后还获得了译介,这个事实本身就耐人寻味。也许这里的迟到不仅是错误,更是歪打正着的表彰。它表明即使是在最具体的技术领域,也存在着时间难以磨灭的经典作品。这本“龙书”,多年来成了陶冶IT学子的“计算机文化”的一个重要部分;它了不起的昵称甚至被收入了多种“行话词典”和百科全书。这些简单的事实无疑都意味着普通论著难以比拟的影响力。
“龙书”——正如大家所知——昵称得自封面上的骑士和怪龙,三位作者也都是赫赫有名的权威。Alfred Aho现任哥伦比亚大学教授,也是著名的计算机语言AW K的发明者之一(AW K中开头的“A”就是他的代指);Ravi Sethi是著名的印度裔计算机科学家,现任Avaya实验室总裁;而斯坦福大学教授Jeffrey D. Ullman还是另一部名著《自动机导论》的作者,像“龙书”一样,那书也有一个被传颂得几乎卷了边儿的昵称:“灰姑娘书”。
这样三位大师级作者合力打造的著作,当然是该领域难以逾越的一座里程碑。事实上,国内外多数其他编译原理教材,都是以这部“龙书”作为渊源和蓝本。但学习者们总还是要回溯到这个源头:即使不少人对该书的写作风格大加诟病,但在多数地方这都已经是对特定主题的最佳表达了。与国内教材的一味死板相比,三位作者的文笔简直算得上生动有味(那个有名的封面就是一个最佳写照,很难想象哪一本国内教材会有这样的情致)。也许国内外教材编写方面能力上的差距,甚至超过了双方技术水平本身的差距。
《Effective Java》 作者:Joshua Bloch 译者:潘爱民 机械工业出版社出版
说起来,这本《Effective Java》对国内读者并不陌生,一册在手,甚至会有些“倦客还乡”的意思。之所以这么说,首先是因为本书的写作本来就是对一个伟大传统的致敬:C++权威Scott Meyers的《Effec tive C++》系列开创了一种结合实践场景,深度解说技术内涵的写作模式。作者不必过多介绍背景知识,直接按照条目(“Item 1...Item 2...”)列出对若干技术要点的指导和告诫。这种组织内容的形式经济、直观,适合已走出初学阶段的读者深入技术殿堂,了解在复杂的应用场景(而不是廉价的例子程序)中的实际考虑和权衡。Add iso n W e sley公司出版的各部“Effec tive…”、“Exceptional…”似乎成了C++使用者们最钟爱的深入读物。因此,对于熟悉这一传统的读者来说,这本《Effec tiv e Jav a》(同样也由Addison Wesley出版)也就成了这个阵营的一个有趣的新兵:有些新奇,但更多的还是亲切。
读者对本书的熟络还来自作者。Joshua Bloch是大量Java核心源码的作者,目前Java语言事实上的领袖。有一回他曾经以“管子工”自况:要是一切运转良好,谁也不会想到他,但一旦某处漏水,管子工也就是第一个要负责、挨骂的。事实上,就是同样从事Java语言设计的同事们,在使用这门语言时也要时常向Bloch讨教。也许是真的不胜其烦,这位Java语言的管子工终于从幕后走出来,把经常被问到的内容总结成书。凭借他对这里迷宫般的管线的布局、转折、弱点的了解,本书自然不啻是金针度人。问世之后,《软件研发》杂志立刻授予它当年的“震撼”大奖。
《Microsoft.NET框架程序设计》 作者:Jeffrey Richter 译者:李建忠 清华大学出版社出版
同属业界扛鼎之作,也同样获得了出版者“亡羊补牢”待遇的,还有这部《Microsoft.NET框架程序设计》。本书也曾在2002年出版过另一个中译本,但随即劣评如潮,各种业内文献只好引用原书影印版而不是中译。一位读者曾在当年12月的《程序员》上,用近8000字的篇幅分析了那个译本的“七大缺憾”,并提出了“外版图书低水平的翻译问题,无形之中为国内从业人员和国外先进技术之间增添了一道不必要的屏障阻隔”的意见。出版社从善如流,因此李建忠先生——那位高屋建瓴而又细致入微的读者,也就成为本次质量大为改观的“修订版”的译者。
本书作者Jeffrey Richter是微软技术领域的几位金牌作者之一,他的名著《Advanced Windows》(后来的版本改称《Programmin g Applications for Microsoft Windows》)是Windows平台系统编程的经典之作;而另一部《Programming Server-Side Applications for Microsoft Windows 2000》更是从事Windows服务器端开发的程序员必读的著作。与很多顶尖微软技术作者一样,Richter并不直接受雇于微软公司,但与这个软件巨头保持着非常紧密的合作关系,曾经参与过多个版本的W ind ow s和O ffice等核心软件的开发。既然能够透过这样的捷径洞悉微软产品诸多内幕,Richter也就凭借自己创办的公司Wintellect,提供针对开发者的咨询、培训服务。
《The Photoshop 7 Wow!Book》 作者:Jack Davis 译者:陈刚杜真 中国电力出版社出版
这本《The Photoshop 7 Wow!Book》来自专业设计人士的推荐。“Wow!”系列是Peachp it出版社的著名品牌,如果这标题译成中文,也许该是《Photoshop7惊艳之书》吧。所谓“惊艳”,当然是来自书中大量的插图和设计实例。这也许会使一个门外汉(比如我)感到目迷五色、无所适从,但对于渴望充电和更新的专业人士,这种繁复而充实的设置恰恰保证了阅读中的愉悦和对求知欲的不断唤起与满足。我的朋友介绍说,随书附赠的光盘中包含的很多Photoshop“预设”,更是对专业工作者极有帮助的内容。
虽然外行如我对本书的好处不甚了了,但原书出版商Peachpit(桃核)还是留意技术出版的人耳熟能详的。该出版社1986年才得创立,第一本书的内容是对当时刚刚问世的激光打印机的赞美(碰巧也由那台打印机完成印刷)。但是由于市场定位准确、经营得法,没过几年这个“桃核”就长成了人人仰视的大树;对Adobe公司的设计工具、苹果公司的Mac系统来说,Peachpit公司出版的总是最权威、最完备的参考书。今天,该公司已经收归出版巨头Pearso n集团的旗下,也成为Adobe公司的官方出版商。事实上,出版商之间这样一种明确而和谐的分工,造就了各个专门领域的“名社”品牌,增进了整个技术出版布局在IT读者眼中的“可见性”。
这是对2003年发生、铭写在技术阅读中的事情的一次扫描;它是被潮水卷上沙滩的螺壳,散乱而不乏真实——如果你乐意拾起一枚倾听,也许其中会传出来自未来的声音。