《The Art of UNIX Programming》(UNIX编程的艺术)Eric S.Raymond(Pearson/Addison-Wesley出版)
《Lean Software Development:An Agile Toolkit》(精益软件开发)Mary Poppendieck和Tom Poppendieck(Pearson/Addison-Wesley出版)
《Pragmatic Starter Kit》Dave Thomas和Andy Hunt,这本书是作者自己出版的,有兴趣的同行可以直接和作者联系。
“图书:技术类”的大奖得主是《Test-Driven Development:A Practical Guide》David Astels(Prentice Hall出版)。获得生产效率大奖的有:
《About Face 2.0》(交互设计精髓2.0)Alan Cooper(Wiley出版)
《Code Reading:The Open Source Perspective》(源代码阅读:开源软件视角)Diomidis Spinellis(Pearson/Addison-Wesley出版)
《Agile Database Techniques》(敏捷数据库技术:敏捷软件开发人员的高效策略)Scott Ambler(Wiley出版)
应该说最后的结果除了“图书:技术类”大奖得主有些蹊跷之外,总的看还是比较有说服力的。说来说去,怪2003年全年出版的好书少,没有太大余地好了。
比这稍早,《Java Developer Journal》等系列刊物也公布了读者选择奖,由于今年的Jolt大奖没有设立读者选择奖,因此两方面正好相辅相成,仿佛一个金鸡,一个百花。《Java Developer Journal》的大奖得主是《Thinking in Java》(Java编程思想,Bruce Eckel,Pearson/Prentice Hall),亚军到第四名分别是《Java Programming with Ant》(Manning)、《Core J2EE Patterns》(J2EE核心模式,Pearson/Prentice Hall)、《About Face 2.0》。同时公布的《.NET Developer Journal》读者选择奖,大奖得主是《Advanced.NET Remoting》(高级.NET远程处理,Apress),亚军到第四名分别是《Applied.NET Framework》(Microsoft)、《Programming Windows in C#》(Microsoft)、《Programming ASP.NET》(Jessie Liberty,O’Reilly)。必须注意的是,这里的参选作品并不限于2003年出版,所以出入比较大,也就好理解了。而其中2002年出版的占据了不少席位,也反衬出2003年的不景气。
那么,2004年呢?2004年将是什么样的景象?更加萧条?还是回归阳春天气?
从今年第一个季度出书情况和我目前掌握的资料来看,应该说总体将处于平稳,可能是比较符合实际。亮点应该不会太少,毕竟已经有许多名著传出了要改版的消息,同时也有许多名家有了出版新书的计划。莺飞草长,杂花生树的时节,我们还是充满希望,转动水晶球,外加夜观天象,大胆预测一下未来吧。
终于可以将我心目中2004年的十大重磅图书奉献给大家了,有如释重负的感觉。我所谓的重磅,评比标准是结合了是否适合引进国内和在国际上的影响以及销售预测。其中当然有很大的主观臆断成分和信息不对称的缺失,到底多大程度上能够反映实际情况,大家尽管仁者见仁,智者见智好了。
重磅图书之一
《Software Engineering:A Practitioner’s Approach,6/e》(软件工程:实践者的研究方法,第六版)Roger S.Pressman出版商:McGraw-Hill 预计原版出版时间:2004年4月
软件工程目前是计算机图书出版领域的热点,虽然已经有些过热,但其重要性在未来几年中显然依旧不可忽视。25年前本书初版出版时,离NATO会议不过10年,软件工程还处于最初的混沌期,它作为一门学科的地位并没有得到广泛的承认。作为此领域综合性著作中的佼佼者,本书从那时起就一直是各种教学场合中的标准教材,培养了成千上万的学生和专业人士。从某种意义上讲,软件工程学科的建立也受到了本书的很大影响。因此,本书的每次改版都可以说是意义重大的。本次修订中动作很大,充分反映了这几年软件工程领域的迅速发展。最明显的改动是取消了单独的面向对象部分,将面向对象全面融入了书中的各个章节,而且普遍地采用UML,基本剔除了传统软件工程的内容,这与当前面向对象方法已经全面取得统治地位,是相适应的。当然,极限编程等敏捷方法也更多地占有了一席之地,第一部分甚至沿袭了敏捷方法学者的思路,将所有过程分成敏捷过程和指令性过程讲述,这与前不久IEEE开始制定敏捷方法标准一样,都宣告了敏捷方法开始进入主流。另一个值得关注的地方是书中介绍Web软件工程的篇幅明显加大(一共五章),应该说非常贴近工程实际(随着C/S架构乃至n层架构的流行,目前纯粹意义上的Web程序开发已经很难找到了),毕竟本书的名字就强调了“实践”二字。
当然,市场中本书有一个劲敌,也将在今年上半年推出新版,这就是英国兰开斯特大学教授Ian Sommerville的《Software Engineering》第七版(Pearson/Addison Wesley)。拿倚天屠龙来类比这两本书是非常合适的,比较两本书虽然困难,但是比较有趣。Sommerville此书的历史也有20年以上了,作者在新版序言中就提到第一版是在价值5万美元的PDP11终端上完成的。在第六版的时候,Sommerville就已经将传统与面向对象融合了,这一点比Pressman“先进”。当然,这与Sommerville重视基本的软件过程而非过程形式有关,在他的眼中,由需求规约、设计、开发和验证、管理组成的软件过程有其万变不离其宗的内核。因此,虽然本书中也充分体现了敏捷方法的重要性(Sommerville认为敏捷方法和UML的广泛应用是这些年软件工程的主要进展),但是总的结构没有改变,分量增加的部分主要涉及软件架构和基于构件的软件工程等。常言道功夫在诗外,两本书不仅本身竞争激烈,而且在外围辅助手段上也是各施其能。网站是少不了的,两书的配套网站都是优秀的软件工程教学和研究资源,而Pressman的内容显然更加丰富,而且针对学生、老师和专业人士都有个性化的服务,并有配套光盘和配套案例。与此同时,两本书都深深打上了SWEBOK(软件工程知识体系)的印记,从这个意义上讲,软件工程如今作为一门学科得到业界的承认,应该是没有问题了。
重磅图书之二
《Exceptional C++ Style》Herb Sutter 出版商:Pearson/Addison Wesley 预计原版出版时间:2004年6月
这是Herb Sutter的Exception系列(《Exceptional C++》、《More Exceptional C++》)的第三本。我推测它的内容将是前两本的延续,也就是根据comp.lang.c++.moderated上的Gotwa精炼和扩展而来,大概是#63到#86(前两本书分别是#1到#30和#31到#62,这么算起来,Sutter的书将要源源不断了)。内容将涉及泛型、标准库、模板、异常安全、内存管理、优化等等。实际上,本书的入选,代表我们对今年C++方面继续出版好书的一种期待。
值得关注的还有两位C++顶尖高手Herb Sutter和Andrei Alexandrescu(《Modern C++ Design》的作者)合著的《C++Coding Standards》(C++编程规范),出版日期要稍晚一些。这应该不是一本普普通通讲编码规范的书,我们期待其中会有更多编程实践和大师经验方面的东西。此外,近来在C++业界非常活跃的Matthew Wilson也将以一本《Imperfect C++》加入Bjarne Stroustrup主编的“C++In-Depth(深入C++)”系列,作为《C/C++Users Journal》的新锐作者,他开发了STLSoft等好几种知名的库,积极参与了旨在摈除C/C++语言弊病的D语言的开发,而且撰写了大量技术文章,他的新书非常值得期待。其他的还有Cay Horstmann(《Java核心技术》的作者)和Timothy A.Budd(《面向对象编程导论》的作者)两位名教授撰写的《Big C++》,当然,这是一本教材。
重磅图书之三
《Photoshop CS Wow!Book》Linnea Dayton,Jack Davis 出版商:Pearson/Peachpit 预计原版出版时间:2004年6月
本书是图形图像领域的代表。虽然从引进角度来说,这个领域困难重重,但是只要炼就火眼金睛,还是能够淘出金子来的。而从海外排行榜的角度看,图形图像仍然会占据不少席位。只不过Photoshop和Flash等主流软件都是刚刚改版不久,今年应该不会形成大的热潮。需要关注的应该是Killer Tips之类的实例型图书。
重磅图书之四
《Object-Oriented Analysis and Design with Applications,3rd Edition》(面向对象分析与设计及其应用,第三版)Grady Booch 出版商:Pearson/Addison Wesley 预计原版出版时间:2004年6月
这是一本千呼万唤始出来的经典著作,作者的分量、前一版的地位和独特的写作风格(书中的漫画非常有趣,建议大家找来看一看)都使它入围重磅之选,毫无悬念也毫无争议,要知道,2002年大红大紫的Robert Martin《敏捷软件开发》最初的雏形不过是为此书写作的一些章节。因此,剩下的问题就只有一个了:6月份,它能如期而至吗?
同时不得不提到的,还有UML三友联袂写成的著作《UML用户指南》、《UML参考手册》和《统一开发过程》应该都有改版的计划。而其中称为“用例之父”的Ivar Jacobson讲述用例驱动软件工程的巨著《Object-Oriented Software Engineering:A Use Case Driven Approach》(面向对象软件工程:用例驱动的方法)新版也有消息说将在4月出版。从某种意义上讲,用例对于实际项目的重要性甚至不亚于UML。此书的分量可见一斑了。
重磅图书之五
《Delphi.NET Developer’s Guide》(Delphi.NET开发人员指南) Xavier Pacheco 出版商:Pearson/SAMS 预计原版出版时间:2004年4月
Delphi的境况在太平洋两岸大大不同,当中国内地现在和可以预见到的将来都有不少Delphi图书畅销的时候,北美的Delphi出版只能用冰点来形容。主流的出版商几乎都放弃了这一市场,留给一些小出版社去争夺。一度非常活跃的Delphi作者群好像和Borland盛期的顶尖开发人员一样,都已经星散。曾经以一本《Delphi Component Design》(Delphi组件设计)技惊四座的Danny Thorpe如今已经在Borland公司挑起技术大梁,当然不会有时间再写书了。而Charlie Calvert(《Delphi Unleashed》等书的作者)在Kylix著作走了麦城之后就封笔了。善于写专门题材的Eric Harmon(Delphi COM、数据库)也已经蛰伏很长时间。勤奋的Marco Cantu(《Delphi7从入门到精通》的作者)前几天刚刚明确表示不会有新的Mastering Delphi 8 for .NET了,这真是个很坏的消息,难道海外市场已经坏到无法支撑这样一本名著?Ray Lischner(《Delphi技术手册》作者)已经心有旁骛,写C++,写SQL,甚至写莎士比亚,但是Delphi是不碰得了。其他的,Alan C.Moore、Bob Sawert、John Ayres都不能给我们带来太多期望。而新起的东欧或者俄罗斯血统的作者,都还显得太嫩。还好,SAMS预告了,这本硕果仅存的名著――《Delphi开发人员指南》仍将与时俱进。原来的多位作者中,Steve Teixeira似乎不再担纲了,剩下绰号X-man的Xavier Pacheco,应该也不会令我们失望。传说中Xavier Pacheco还有撰写一本《Applying Design Patterns with Delphi》的计划,不知道什么时候会实施。
重磅图书之六
《Effective Enterprise Java》Ted Neward 出版商:Pearson/Addison Wesley 预计原版出版时间:JavaOne大会
Effective?对,这是Scott Meyer系列的新产品,也是Joshua Bloch《EffectiveJava》的后续篇。众所周知,Java目前在实际应用中,最大量的就是企业级应用程序开发上。而目前J2EE的书虽然不少,但是精品却很难数出来。TedNeward是一位横跨.NET和J2EE两个世界而且游刃有余的专家,能通过Scott Meyer这一关,显然实力非同小可。查一下老底就知道了,他是著名的开发人员脑库DevelopMentor的教员,开发过很多大型项目,实际经验丰富。他的最新作品是O’Reilly出版的《C# in a Nutshell》和《Shared Source CLI Essentials》(讲述.NET的开源版本Rotor),成名作则应该是Manning的《Server-Based Java Programming》,好像国防工业出版社出版过中译本。当然,如今他头上最闪耀的光环,应该是J2EE技术目前人气最旺的社区The Server Side.com的主编了。
让我略感奇怪的是,为什么Ted Neward不遵循TheServerSide.com的传统,把手稿放在网上公开审校呢?难道是Addison Wesley的风格制度使然?不过,从已经小范围见诸网上的“章节”来看,这是一部典型的按条目(Item)组织的力作,分为“架构”、“呈现”(即界面是也)、“安全”、“状态管理”、“系统”、“处理”和“通信”数章。Ted Neward通晓两个平台,因此持论更加客观公允,少了许多宗教气。值得注意的是,他是EJB的长期反对者,早在写《Server-Based Java Programming》的时候,就洋洋洒洒数十万言而不提一句EJB。同时,他对P2P和XML等被人狂吹的技术都有非常冷静地认识,相信书中会有不少类似的醒世良言。当然,随着J2SE1.5的推出,我们对Java图书还抱有更多期待。
重磅图书之七
《The Art of Software Testing,2/e》(软件测试的艺术,第二版) Glenford J.Myers 出版商:Wiley 预计原版出版时间:2004年10月
又是一本超级经典的改版。本书第一版是软件测试的奠基之作,出版于1979年。时隔25年,怕不是要效仿《人月神话》、《程序设计心理学》弄个周年纪念版?不过,老实说,书中的具体技术可能已经不适用了,但是基本原则原理读起来仍然振聋发聩,因为实践中,我们没有做到的还多的很。如果我没有弄错的话,本书作者的岁数已经不小了,退休前在一家著名的电子公司做总裁。我们都知道硬件的检测和质量向来比软件过硬,也许我们能有机会借他山之石?
重磅图书之八
《Refactoring to Patterns》(从重构到模式)Joshua Kerievsky 出版商:Pearson/Addison Wesley 预计原版出版时间:2004年7月
从封面就可以看出来,本书是Martin Fowler和Kent Beck联袂打造的“Signature Series”(签名系列)的一种,而已经出版的和将要出版的五本书均非等闲之辈,屡获大奖,充分证明了Martin Fowler的过人之处。又是重构,又是模式,把时髦词、畅销元素都占上了,还能火不了吗?本书最早的雏形是作者在《软件研发》杂志上发表的一篇同名文章,讲述自己曾经迷恋模式以至走火入魔的故事,总结了重构和模式的关系以及正确运用模式的方式。应该说,这一主题是学习模式又不能得其要领的广大开发人员非常急需的。书稿在网上审校多日,而且作者就此主题在各种会议、培训中教授了许多开发人员,积累了丰富的经验,书的质量是没有疑问的。希望此外还能有更多讲述软件架构、框架和模式的书籍涌现。
重磅图书之九
《21st Century Compilers》(21世纪编译器)Alfred V.Aho等 出版商:Pearson/Addison Wesley 预计原版出版时间:2004年10月
本书是众多今年可能改版的经典教材的代表。当然,就是在所有计算机教材中,本书也绝对堪称经典――大名鼎鼎的“龙书”是也。它似乎还是此类动物漫画作计算机教材封面的鼻祖。此次修订,离前一版也将近10年了。作者阵容依然空前强大:Aho曾任贝尔实验室的副总裁,现在任教于哥伦比亚大学,担任计算机系负责本科生教学的副主任,美国工程院院士;Ravi Sethi是Avaya实验室的总裁,ACM会士;Jeffrey D.Ullman,斯坦福大学教授,美国工程院院士;而最后一位作者,也是本次新增的,是斯坦福大学华裔女教授Monica Lam(林倩玲)。内容当然更不会让我们失望:阐述了新的数据流分析方法,强调代码的优化,解释了Java等语言所具备的即时编译和垃圾收集等概念。
重磅图书之十
《Code Complete 2》Steve McConnell 出版商:Microsoft Press 预计原版出版时间:2004年6月
第一次听说《Code Complete》要改版,我用程度最重的形容词表示了自己的惊讶。对于10年前的开发人员来说,这本书是真正的圣经,“一册在手,别无他求”。而作者Steve McConnell正是计算机技术图书那个黄金时代与Charles Petzold、Richard Stevens等人齐名的代表人物。他也是微软出版社连续推出《Debugging the Development Process》、《Dynamics of Software Development》、《Software Project Survival Guide》等名著(就是曾经风行一时由机械工业出版社华章公司推出的“微软经典系列”)那个黄金时代的代表作者之一。此后曾担任《IEEE Software》杂志的主编。书中的思想和意识,至今对使用各种语言的程序员仍然具有很大的实用价值。在前不久召开的“软件研发大会(SD West 2004)”上,Steve McConnell有一个报告,讲述本书出版十年以来,软件研发领域的发展,包括语言、工具、环境的进步,增量开发、测试为先、对架构的重视、敏捷方法等等,相信都会反映到本书的改版中。
这里的预测难免会挂一漏万,最困难的地方是有些重要作品无法确定是否今年能够出版。明显的比如Bruce Eckel的Thinking系列,计划中还有《Thinking in C#》、《Thinking in Patterns》、《Thinking in Enterprise Java》等等。此外,随着.NET的发展,C++为了在微软平台上保留自己的地位,势必会做出一些扩展,这也正是Herb Sutter和Stan Lippman等微软C++团队目前与Bjarne Stroustrup紧密合作的目的。与此对应的,Stan Lippman的《C++ Primer》已经有了修订的计划,Bjarne的巨著因此而改版也并非完全不可能。而.NET方面、Java方面、Linux和开源软件方面,诸多技术都处于快速发展的阶段,软件工程更是方法学春秋战国,这种情况下,我们对今年以及未来抱有更多的期望,应该并不是不着边际的梦想吧。