UML软件工程组织 |
近10年来最重要的软件开发书籍《设计模式》 |
蒋涛 |
前言 两年前曾经在中国计算机报写过几篇书评,那时候感觉软件开发方面的书籍虽然不少,可是精品屈指可数,仅有的几本老牌经典名著还版本陈旧,如Charles Petzld的《Windows开发指南》、 Jeffrey Richter的《Windows高级开发指南》、David Kruglinski的《VC 技术内幕》等。这两年可能是互联网给软件业注入了新活力,再加上软件从业人员迅速增加,各家出版社争相出版计算机图书,使得情况大为改观。虽然书目让人眼花缭乱、书籍价格也越来越高,可是整体质量良莠不齐。很多国内编著的技术书籍号称“高级编程”,实际上只相当于入门手册,有的甚至将帮助文件翻译出来也能出书,而且一版又一版,乐此不疲,这真是出版界的悲哀! 我是很喜欢买书的人,技术领域里几乎没有人不需要读书。有时候在书店看见别人左挑右选,最终拿着几本质量低下的图书却如获至宝。真想拉住他,告诉他孰优孰劣。不过我们中国人好像不太习惯这种直接的方式。后来我想,如果有专业书评,那对读者应该是很有裨益的。Amazon为什么能成为购书网站的No 1,高质量的读者评书就是其中的一大原因。台湾侯捷先生的《无责任书评》也是非常受欢迎的书评专栏,可惜现在侯先生专心创作,书评暂停,真希望有一天还能看到《无责任书评4》。
选择书籍最重要的是看作者:一看他是否具有真正的水平;二看他是否能将技术阐释清楚。国内一些编书或者翻译的人对技术只是一知半解,又追求速度和效益,结果这种书只能是误人子弟。但水平高的人如果只有技术,没有写作和表达才能,或选材过于艰深,或文字晦涩难懂,也很难为读者接受。国内原创图书明显弱点是过于生硬,属于“冷面扑克型,不带任何感情,没有任何技术以外的润滑与承先启後的转折”(侯捷先生语),而且缺乏实用,看上去理论上面面俱到,可实际上却没有什么应用价值,所以国内几乎没有什么知名作者甚至译者,当然这也和出版大环境有关系。 台湾在这方面做得很不错,英文版技术书籍能很快翻译出版,同时也能出版较好的原创书籍。大陆出版界应该向他们学习,全国每年参加程序员水平考试的就有将近二十万人,以大陆人才之多、市场之广,出版社花心血出精品书籍,应该可以取得不错的销售业绩,同时对整个软件行业水平的提高也应该有很大帮助。
国内有四家知名的电脑图书出版社:清华大学出版社、机械工业出版社、电子工业出版社和人民邮电出版社。本来希望出版社名声很大,是当年电脑图书出版的主力军,可惜现在只注重速度,太不重视质量,每况愈下,好好的一本《VC技术内幕》第五版,和清华出的《VC技术内幕》第四版相比,高下立判,所以对希望的书我现在有点敬而远之。 清华大学出版社作风严谨,一直保持比较高的水准。电子工业出版社是老牌出版社,曾经出版过不少好书名著,象《Windows 95编程奥秘》等等,但是最近有点止步不前。人民邮电出版社也出了不少书籍,特别是和台湾出版社合作较多,但技术书籍水平却不敢恭维。 和前三家相比,机械工业出版社是资历最浅的,不过却是步伐最快的。近几年引进的原版图书数量肯定排名第一,而且越来越重视质量,特别是最新出版的一批图书,有几个可喜的地方: u 开始注重译者和翻译质量。译者来自各个大学,主要由教授博士担纲,翻译质量中规中矩,相当不错; u 选材多样、覆盖面广。这批图书有《TCP/IP详解 卷三:TCP事务协议、HTTP、NNTP和UNIX域协议》,《莱昂氏UNIX源代码分析》,《Apache Server源代码分析》,《Linux内核源代码分析》,《设计模式》,《软件需求》,《程序设计实践》,《Delphi 5开发指南》,《Windows核心编程》等。特别在网络编程和软件工程方面,都是十分精彩的名著; u 提供了网站http://www.china-pub.com/(中国互动出版网)支持。网站上大部分图书都有PDF格式的电子版,无论买书与否,用户都可以直接下载。
《设计模式》的英文书名是《 Design Patterns: Elements of Reusable Object-Oriented Software 》。此书成名已久,实际上是1995年出版的,该书共有四名作者Erich Gamma、 Richard Helm、Ralph Johnson和John Vlissides,全部是博士,个个来头不小。该书堪称是面向对象设计的经典名著,一直名列Amazon销售排行榜,Amazon的读者综合评价达到了满分——五颗星,专家学者对《设计模式》也赞不绝口,书中扉页列出了它获得的赞誉:
--Stan Lippman, C++ Report
--Larry O’Brien, Software Development
--Steve Billow, Journal of Object-Oriented Programming
--Sanjiv Gossain, Journal of Object-Oriented Programming
《设计模式》共有6章,第一章介绍了设计模式的概念、描述格式和分类,解释了设计模式是如何应用解决问题,最后给出了选择和使用设计模式的很多建议。这一章是总览,需要和后面几章参照才能理解。 第二章通过设计一个所见即所得的文档编辑器介绍设计模式的实际应用,对设计中的问题列举了一个或多个设计模式的解决方案,并讨论了它们的优缺点。这个生动的实例充分显示了四位世界级专家作者是如何思考设计软件的。 下面的三章分类详细描述了23种常用的设计模式,给出了每种模式的设计意图、结构、使用效果、实现要点和缺陷、代码示例(SmallTalk和C++)、在实际软件中的应用、相关模式等。这些模式分类如下表:
5种创建型 (creational)
Builder Factory Method Prototye Singleton 7种结构型 (structural) Bridge Composite Decorator Fa?ade Flyweight Proxy 11种行为型 (behavioral) Command Interpreter Iterator Mediator Memento Observe State Strategy Template Method Visitor 最后一章总结了设计模式给软件设计带来的巨大影响。几年后的事实证明《设计模式》是近10年来最重要的软件开发书籍之一,《设计模式》给出的模式格式和词汇几乎成了软件设计的工业标准。 本书提供的23种设计模式看起来好像数目比较少,最新2000年出版的《The Pattern Almanac 2000》号称有700多种模式介绍。但实际上,模式数量不在多少,关键在于领会设计模式的思想,学以致用。本书作者之一John Vlissides曾经有一次举行演讲,他问听众中有多少人看过《设计模式》,几乎所有人都举手,他再问有谁能解释如何实现组合模式(23种模式之一),举手的人就寥寥无几了。这23种模式凝聚了作者的经验和心血。当你也开始在设计中考虑如何应用模式、如何使设计更简单更灵活、复用性更好时,你的实力就无形中提高了一个层次。 《设计模式》是每个软件设计人员的必备书籍。但我要说明的是这本书并不是一本容易读懂的书籍,有的专家甚至说一个开发人员需要花上一年时间才能领会这本书的精要。学习模式需要反复练习体会,才能应用自如。这有点象学围棋中的定式。围棋定式是百年来高手下法的总结,但不能简单地应用,要看场合选择合适的定式,还要按棋理会变通下法。 这本书不是读完就可以束之高阁的,只有具备相当基础的读者才能从本书获益,读者首先必须熟悉面向对象设计语言如C++或者Java,而且最好有开发和维护面向对象软件的经验,只有具备一些反面的设计经验才能充分体会设计模式的妙处。 该书的出版虽然比英文版晚了近五年,但总是从无到有,有了巨大的进步。据可靠消息,目前国内有几家出版社都在大力引进国外技术名著,在技术出版领域保持跟踪国外最新动态。这对于国内软件业整体水平的提高和发展大有益处,毕竟最新的软件技术和发展都来自于国外,希望今后的技术名著不再有这五年之差,也希望我国的软件业能走向海外。
|
版权所有:UML软件工程组织 |