Programming 版 (精华区)

发信人: JZY (Jason), 信区: Programming
标  题: 教本与手册的完美结合(转载)
发信站: 哈工大紫丁香 (2002年05月28日19:56:15 星期二), 站内信件


以下转载自候捷网站(jjhou.csdn.net)
----------------------------------------------------------------------------
----
教本与手册的曼妙组合
《C++ 标准程式库》孟岩译序
----------------------------------------------------------------------------
----
IT技术书籍市场,历来是春秋战国。一般来说,同一个技术领域 总会有那麽数本、十数
本、甚至数十本定位相似的书籍相互激烈竞争。其中会有一些大师之作脱颖而出,面南
背北,黄袍加身。通常还会有後来者不断挑战,企图以独到特色蠃得自己的一片天地。
比如说在演算法与资料结构领域,D. E. Knuth的那套《The Art of Computer Program
ming》一至三卷,当然是日出东方惟我独尊。但是他老人家的学生Robert Sedgewick凭
着一套更贴近实用的《Algorithms in C》系列,也打出自己一片天下,成为很多推荐列
表上的首选。就C++ 运用经验类书籍来说,Scott Meyers的《Effective C++》称王称霸
已经多年,不过其好友Herb Sutter也能用一本《Exceptional C++》获得几乎并驾齐驱
的地位。嗨,这不是很正常的事吗?技术类书籍毕竟不是诗词歌赋。苏轼一首「明月几
时有,把酒问青天」,可以达到「咏中秋者,自东坡西江月後,馀词尽废」的程度,但
怎?可能想像一本技术着作达到「我欲乘风归去,又恐琼楼御宇,高处不胜寒」的境界!
谁能够写出一本技术书,让同一领域後来者望而却步乾脆死心,那才是大大的奇迹!
然而,您手上这本《The C++ Standard Library》,作为C++ 标准程式库教学和叁考类
书籍的定音之作,已经将这个奇迹维持了三年之久。按照IT出版界时钟,三年的时间几
乎就是半个世纪,足以锤炼又一传世经典!
1998年C++ Standard通过之後,整个C++ 社群面临的最紧迫任务,就是学习和理解这份
标准给我们带来的新观念和新技术。而其中对於C++ 标准程式库的学习需求,最为迫切
。C++ 第二号人物Andrew Koenig曾经就C++ 的特点指出:『语言设计就是程式库设计,
程式库设计就是语言设计』(注1)。C++ Standard对程式库所做的巨大扩充和明确规范
,实际上即相当於对C++ 语言的能力做了全面提升与扩展,意味着你可以站在无数超一
流专家的肩上,於轻敲键盘间,将最出色的思想、设计与技术纳入囊中,让经过千锤百
炼的精美代码成为自己软体大厦的坚实基础。可以说,对於大多数程式师来说,标准C+
+ 较诸「ARM时代」之最大进步,不是语言本身,而恰恰是标准程式库。因此,我们可以
想像当时人们对C++ 标准程式库教学类书籍的企盼,是何等热切!
注1:"Language design is library design, library design is language design",
叁见Andrew Koenig, Barbara Moo合着《Ruminations on C++》第25, 26章。
一方面是已经标准化了的成熟技术,另一方面是万众期待的眼神,我们完全有理由认为
,历史上理应爆发一场鱼龙混杂的图书大战。它的典型过程应该是这样:先是一批快刀
手以迅雷不及掩耳盗铃(注2)之势推出一堆敛财废纸,然後在漫长的唾骂与期待中,大
师之作渐渐脱颖而出。大浪淘沙,最後产生数本经典被人传颂。後虽偶有新作面世,波
光点点已是波澜不兴。
注2:此处非笔误,而是大陆流行的一句 "新俚语",意思十分明显,就是 "迅雷不及掩
耳" 地 "掩耳盗铃"。
然而,这一幕终究没有在「C++ 标准程式库教学与叁考书籍」领域内出现。时至今日,
中外技术书籍市场上这一领域内的书籍为数寥寥,与堆积如山的C++ 语言教学类书籍形
成鲜明对比。究其原因,大概有二,一是这个领域 的东西毕竟份量太重,快刀手虽然善
斩乱麻,对於C++ 标准程式库这样严整而精致的目标,一时也难以下手。更重要的原因
则恐怕是1999年8月《The C++ Standard Library》问世,直如横刀立马,震慑天下。自
推出之日起至今,本书在所有关於C++ 标准程式库的评论与推荐列表上,始终高居榜首
,在Amazon的销量排行榜上名列所有C++ 相关书籍之最前列。作者仅凭一书而为天下知
,成为号召力可与Stan Lippman, Hurb Sutter等「经典」C++ 作家比肩的人物。此书之
後,虽然仍有不少着作,或深入探讨标准程式库的某些组件,或极力扩展标准库倡导的
思想与技术,但是与《The C++ Standard Library》持同一路线的书籍,再没有出现过
。所谓泰山北斗已现,後来者已然无心恋战。
於是有了这样的评论:『如果你只需要一本讲述C++ 标准程式库和STL的书籍,我推荐N
icolai Josuttis的《The C++ Standard Library》。它是你能得到的唯一一本全面讲述
C++ 标准程式库的书,也是你能想像的最好的一本书。』这种奇异情形在当今技术书坛
,虽然不是绝无仅有,也是极?罕见。
究竟这本书好到什麽程度,可以获得这麽高的评价?
我正是带着这分疑问,接受侯捷先生的邀请,着手翻译这本经典之作。随着翻译过程的
推进,我也逐渐解开了心中的疑惑。在我看来,这本书的特点有四:内容详实,组织严
密,态度诚恳,深入浅出。
首先,作为一本程式库叁考手册,内容详实全面是一项基本要求。但是,本书在这方面
所达到的高度可以说树立了一个典范。本书作者一开始就提出一个极高的目标,要帮助
读者解决「使用C++ 标准程式库过程中所遇到的所有问题」。众所周知,C++ 标准程式
库是大家伙,每一部分又有很精深的思想和技术,既不能有所遗漏,又不能漫无边际地
深入下去,何取何舍,何去何从,难度之大可想而知!作者在大局上涵盖了C++ 标准程
式库的全部内容,在此基础上又对所有组件都进行细致的、立体式的讲解。所谓立体式
讲解,就是对於一个具体组件,作者首先从概念上讲解其道理,然後通过漂亮的范例说
明其用法,申明其要点,最後再以图表或详解方式给出叁考描述。有如钱塘江潮,层层
叠叠,反反复复,不厌其烦。读完此书,我想您会和我一样感受冲击,并且完全认可作
者付出的巨大心血。
C++ 标准程式库本身就是一个巨大的有机整体,加上这本书的立体讲解方式,前後组织
和对应的工作如果不做好,很容易会使整部书显得散乱。令人钦佩的是,这本书在组织
方面极其严密,几无漏洞。相关内容的照应、交叉索引、前後对应,无一不处理得妥善
曼妙。整体上看,整本书就像一张大网,各部分内容之间组织严谨,契合密切,却又头
绪清晰,脉络分明,着实难能可贵。我在阅读和翻译过程中,常常诧异於其内容组织的
精密程度,简直像德国精密机械一样分毫不差 。後来才想到,本书作者Nicolai Josut
tis就是德国人,精密是德意志民族的性格烙印,名不虚传!
说起德意志民族,他们的另一个典型性格就是诚实坦率。这一点在这本书同样有精彩的
展现。身为 C++ 标准程式库次委员会成员,作者对於 C++ 标准程式库的理解至深,不
但清楚知道其优点何在,更对其缺陷、不足、不完备和不一致的地方了如指掌。可贵的
是,在这些地方,作者全不避讳,开诚布公,直言不讳,事实是什麽样就是什麽样,绝
不文过饰非,绝不含混过关。作为读者,我们不仅得以学到好东西,而且学到如何绕开
陷阱和障碍。一个最典型的例子就是对於valarray的介绍,作者先是清清楚楚地告诉读
者,由於负责该组件设计的人中途退场,这个组件没有经过细致的设计,最好不要使用
。然後作者一如既往,详细介绍valarray的使用,完全没有因?前面的话而稍微有所懈怠
。并且在必要的地方将valarray的设计缺陷原原本本地指出来,让读者口服心服。读到
这些地方,将心比心,我不禁感叹作者的坦诚与无私,专精与严谨。
本书最具特色之处,就是其内容选取上独具匠心,可谓深入浅出。本书的目的除了作为
手册使用,更是一本供学习者阅读学习的 "tutorial"(自学教本)。也就是说,除了当
手册查阅,你也可以捧着它一篇一篇地阅读学习,获得系统化的坚实知识。一本书兼作
 "tutorial" 和 "reference",就好像一本字典兼作「作文指南」,没有极高的组织能
力和精当的内容选择,简直难以想像会搞成什麽样子。了不起的是本书不仅做到了,而
且让你感觉,学习时它是一本最好的 "tutorial",查阅时它是一本最好的 "reference
",我要说,这是个奇迹!单从学习角度来说,本书极为实用,通过大量鲜明的例子和切
中要害的讲解让你迅速入门,而且绝不仅仅浅尝辄止,而是不失时机地深入进去,把组
件的实作技术和扩展方法都展现给读者。单以STL而论,我经常以侯捷先生提出的「STL
学习三境界」来描述一本书的定位层次,这本书就像一座金字塔,扎根於实用,尖锋直
达「明理」和「扩展」层次。从中你可以学到「reference语意」的STL容器、smart po
inter(灵巧指标)的数种实现、扩充的组合型仿函式(composing function object)
、STL和IOStream的扩展方法、订制型的配置器(allocator)设计思路等等高级技术,
也能学到大量的实践经验,比如vector的使用技巧,STL容器的选择,basic_string<> 
作为容器的注意事项等等。可以这麽说,这本书足以将你从入门带到高手层次,可谓深
入浅出,精彩至极!
我很高兴自己第一次进行技术书籍翻译,就能够碰到这样一本好书,这 要深深感谢侯捷
先生给我一辈子都庆幸的机会。翻译过程出乎意料地艰辛,前後持续将近10个月。我逐
字逐句地阅读原文,消化理解,译成自以为合适的中文,然後交给侯先生。侯先生接手
後再逐字逐句地阅读原文,对照我的粗糙译文,进行修订和润色,反复品味形成最终译
稿。作为译者,侯先生和我所追求的是,原书技术的忠实呈现加上完全中文化、中国式
的表达。我们为此花费了巨大的心力,对我来说,付出的心血远远超过一般翻译一本书
的范畴。虽然最终结果需要广大读者评论,但今天面对这厚厚的书稿,我问心无愧地享
受这份满足感。我最大的希望是,每一位读者在学习和查阅这本中文版的时候,完全忘
掉译者曾经的存在,感觉不到语言的隔阂,自由地获取知识和技术。对於一个初涉技术
翻译的人来说,这个目标未免太贪心了,可是这始终会是我心 的愿望。一个译者应该是
为了被忽略而努力的。
最後,感谢侯先生一直以来对我的欣赏和帮助,感谢您给我的机会,我十分荣幸!感谢
华中科技大学出版社的周筠老师,您始终友好地关注着我,鼓励着我。感谢CSDN的蒋涛
先生,您的热情鼓励始终是我的动力。感谢我的父母,弟弟,你们是我最爱的人,是我
最坚强的支柱!感谢曾经帮助过我,曾经关心过我的每一个人,无论你现在怎样,我为
曾经拥有过的,仍然拥有着的每一片快乐和成果,衷心地感谢你!
祝各位读书快乐!
孟岩 2002年5月於北京

--
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.229.69]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:5.868毫秒