本文转载自:http://news.csdn.net/n/20060829/94184.html
选择现在来推荐C++图书,看似蹊跷,实则是有原因的。我们的专栏去年初从Java图书开始,一年多的时间里始终对C++触及甚少。C++程序员出身的我,已经受到了不少好友和读者的质疑。去年是C++诞生20周年(从1985年第一个商业实现的发布算起),世界各地包括国内都举行了不少活动,当时本来已经动笔写了一个初稿,也想来
终于促使我“重续前缘”的是今年以来发生的两件事。一是国内又一轮C++好书扎堆儿出版,增加了本文的必要性,否则,荣耀先生在2004年所写的《C++程序设计之四书五经》( 上篇 、 下篇 )几乎不可能超越。
第二件则是《C/C++User’sJournal》的停刊。最开始在comp.lang.c++新闻组上读到这条消息时,我还以为是哪位反C++的老兄开了个不怀好意的玩笑呢:“C和C++正在走向消亡。”可是CUJ的主编P.J.Plauger很快就出来予以证实——这一切是真的!已经出版20多年、汇集了众多C++顶尖专家的CUJ永远停刊了。
C++的现状到底如何?它是否像那位老兄所说的“isdying”了呢?当然不是。TIBOE的编程社区指数的趋势显示,这纯粹是一种不负责任的以讹传讹。从图一可以看到,C++虽然绝对比例有所下滑,但是几乎始终占据三甲之列,尤其是近一年来,非常稳定。按表一的数据,C++的上涨幅度甚至高于因为Web2.0火爆而迅速蹿红的PHP、Java Script、Ruby,也高于C#、Python这样的时髦语言,只逊于Java和VB。Source forge.net上项目使用的语言统计数据也同样证明了这一点,表二可以说明这一点。C++的表现虽然不如Java,但是非常稳定,而且稳中有升。
当然,正如Plauger解释停刊原因时所说的,技术和技术杂志/图书的生命周期存在很大差异。以内容为主的杂志,生命周期最短,而图书次之,而技术本身的生命力往往要强得多。因为人们买书和杂志,更多的是为了了解新东西。当技术进入人们的视野,开始成为关注的焦点时,相关杂志和图书也就进入了黄金期。如果一项技术不能很快成为主流,图书和杂志将很快消失;而一旦成为主流,进入平稳发展期,图书和杂志的衰落也就不远了。北美Java相关图书的大局完全符合这样的规律。1990年代后期的火爆,之后迅速崩溃,而后再次兴起,再就是目前的渐归平淡(国内正好慢半拍,但趋势是相同的)。而C++标准化完成于1998年,杂志又坚持了8年,平心而论,已经相当不错了。CUJ的作者阵容是罕见地强大,在我看来,任何一本Java杂志至今都未曾达到这样的高度,这从另一方面也说明了C++专家阵容的实力和良好风气。也许我们可以自我安慰的是,撰写文章的机会更少之后,这些专家也许能够奉献出更多好书。
这些年来,C++方面的图书出版也经历了类似的过山车式的大起大落。本文的作者之一就是2002年前后高峰时期曾经参与推波助澜的亲历者。在2000年之前,C++虽然久已成为主流语言,但是国内几乎没有一本像样的标准C++图书,许多人脑中的C++要么是C的一种升级,要么与MFC或者VisualC++混为一谈。而这种情况在2002年前后被出版界一拥而上,戏剧性地改变了。到2004年,几乎所有重要的C++名著都已经奇迹般地引入国内。时至今日,虽然C++图书出版品种萎缩,但是图书的销售非常稳定。按本文作者之一为《程序员》杂志撰写的2005年综述《图书:技术趋势晴雨表》的分析,在编程语言类图书中,C++仍然表现最佳,其次是VB,然后才是Java,与TIOBE的数据基本一致。
接下来,我们还是按照推荐Ja鄄va图书的老套路,将C++图书分为综合/巨著、入门、中级和专题四部分介绍。本月是前两部分。因为已有的相关推荐已经比较成熟,我们把重点放在近来出版的新书上。
综合/巨著
《C++程序设计语言(特别版)》
Bjarne Stroustrup
中文版:裘宗燕 译
机械工业出版社
影印版:高等教育出版社
程序设计语言的书,有一个很有趣的现象,就是语言发明者几乎都要写书,而语言开发年代越新的,书的质量似乎越差。C和C++以及Perl的夫子自道均成为不可动摇的经典,相比之下C的口碑最好,20年后仍然首屈一指;Java(人民邮电出版社即将出版)处于中点,虽然也堪称经典,但是因为竞争激烈,不如前面几部著作那样不可替代;PHP(O’Reilly出版)又次之;C#更次之,几乎等同于文档;到了Ruby作者的那本Nutshell(O’Reilly出版),甚至骂声都不少了。
本书不适合初学者,内容较深,而且许多地方在你有了一定经验之后再去体会,才会发现其高妙之处。但是对于中高级读者,本书完全当得字字珠玑的评价。从某种意义上说,许多其他中级C++图书中的条款、经验之谈,读起来似乎新鲜,但是仔细翻看本书,其实Bjarne早已经谈到。无怪乎有传说Bjarne对Scott Meyer并不感冒,曾表示后者无非是收集了一些自己四处流露的思想成书,却铸就大名(小道消息,切勿外传)。稍微遗憾的是,裘教授的翻译虽然已属难得,但是不够平易,有些地方增加了阅读的门槛,书中的索引错误较多,而且按中文排序,反而不方便查找。
Stroustrup的另一本著作《C++语言的设计和演化》,也值得推荐,要想成为真正的C++高手,就需要了解各种特性的来龙去脉,此书绝对不应错过。当然,对于语言本身学习并非必需。
《C++Primer中文版》(第四版)(新书!)
Stanley B.Lippman, Josee Lajoie, Barbara E.Moo
中文版:蒋爱军等译
人民邮电出版社
第三版影印版:人民邮电出版社
本书经常被人与Stroustrup的著作相提并论,甚至有“倚天屠龙”之称。当然,Stroustrup书中那种深不可测的感觉,不是本书作者追求的目标,C++最佳教本是本书最好的定义。不过,本书又不仅仅是教本而已,其中也处处体现着大师级作者的丰富经验和真知灼见。
与一般修订不同,第四版中作者几乎完全重写,我们甚至找不到什么完全相同的话,其决心之大,可见一斑。在标准并无更新的情况下,这样大的改动,原因何在呢?在我看来,这体现了C++界在面对Java、C#等更加“简单的”语言的挑战下达成的一种共识。其核心,就是摆脱历史负担,将C++当作一门新语言教学,通过标准库、最佳实践的强调,降低C++学习和使用的难度。
从我自己的阅读体验来说,本书第三版抱负太大,过于求全,按照面向过程、基于对象、面向对象和泛型四种编程风格组织内容,对于初学者来说是存在负作用的。第四版一开始就使用标准库,而且素材的组织更加流畅,可读性大大提高,学习曲线大大缩短。而现代编程风格的融入,又使本书仍然显得卓然不群。如果说第三版推荐给初学者阅读我还心存疑虑的话,第四版就没有任何障碍了。值得一提的是,本书的翻译非常优秀,不输于任何已知的名家。
附:《C++编程思想》(第二版)卷1:标准C++导引,卷2:实用编程技术
Bruce Eckel
中文版、影印版:机械工业出版社
本书的名气之大,几乎不在以上两种巨著之下,尤其是卷2出版之后。其优点在于融入了最新的业界实践,比如防御性编程、测试驱动开发、设计模式等等。当然,对面向对象思想的阐释也是Bruce Eckel的成名招牌。之所以只能获得一个列席的资格,原因出在翻译上。
入门
《Accelerated C++中文版》
Andrew Koenig, Barbara E.Moo
中文版:中国电力出版社
影印版:机械工业出版社
C++入门图书极多,《C++ Primer》其实也可以算作入门书,尤其是第四版。但是,更多地被人(包括Bjarne Stroustrup)推荐的入门书却非本书莫属。当然,与竞争对手相比,本书定价和篇幅上的优势非常明显。作者夫妇都是最早在贝尔实验室与Stroustrup并肩作战的先驱,Moo女士甚至担任过cfront编译器的项目经理,是Stroustrup等人的领导。他们在斯坦福大学采用标准库优先的方法,使学生一上来就能编写有用的“大”程序,取得了很好的效果。如今这种方法已经成为一种共识。需要注意的是,中文版的翻译问题较多。
与此类似的是Lippman根据Primer缩编的《Essential C++》,因为结构是第三版的,对初学者来说难度比较大,所以不再推荐。
《C++ PRIMERPLUS》(第5版)中文版
Prata 孙建春 韦强译
人民邮电出版社
《C++入门经典》(第3版)(新书!)
Ivor Horton 李予敏译
清华大学出版社
这两本书以及Deitel父子的C++属于同一档次的图书,作者经验均非常丰富,图书涵盖较全,选材中规中矩,历经多版修订,各方面都比较成熟,作为入门都是不错的。相比之下,Prata的篇幅更加合适,而且我感觉他的叙事风格更符合大部分初学者的学习习惯。说明一点,以上的评价是根据原版做出,中译本我们并未见到,欢迎购买了这三本书的读者评价比较翻译质量。
中级
中级图书基本上是经验之谈,讲述如何实际编程、哪些地方容易出错以及各种场合下的do和don’t的问题。有篇Amazon书评用一个妙喻很好地说明了中级和教程图书的区别,教程是驾驶员手册,而中级图书是陪练。在真正开始驾驶时,谁都希望有一位专家在副驾驶座位上随时提醒纠正。
C++专家的实力在中级图书层次得到了充分体现。Java和C#等等在此层次就逊色得多。Java只有Effective Java、PracticalJava以及人民邮电出版社新近出版的《Java解惑》三种,C#更只有Effective C#和Framework Design Guidelines(均将由人民邮电出版社出版)两本,也许是语言本身使然?
《C++必知必会》(新书!)
Stephen Dewhurst 荣耀译
人民邮电出版社
本书的原名是C++ Common Knowledge,也就是常识之义。出版社的宣传语是“最好的第二本C++图书”。的确,掌握语言并有一定实践经验后,这本书可以作为一个知识点的复查单,看看自己的C++知识和技能与一名合格的专业程序员还有哪些差距。Dewhurst的文字非常平易,很容易读进去。这本书对于C++高手也是有用的:可以在周围的同事询问一些常识问题时,代为解答。本书得到荣耀这样优秀的译者,更加增色不少。
Scott Meyers系列
《Effective C++中文版》
第二版:侯捷译
华中科技大学出版社
第三版影印:
电子工业出版社
《More Effective C++中文版》
侯捷译 中国电力出版社
《Effective STL》(新书!)
潘爱民译
清华大学出版社
长期以来,因为这个系列Scott Meyers在C++界的地位几乎是一人之下,其影响之大,可想而知。Meyers的确是难得的优秀技术作家,不仅在于他开创的Effective的写作方式,更在于他精湛技术和透彻叙述的完美结合。这一方面Stroustrup其实是需要向他学习的。三本书各有偏重:EC是语言基础和技术,MEC是高级特性和设计,STL专讲标准库。值得注意的是,Effective C++一书已经有了新版本,加入了模板、资源管理、多线程等内容,而且素材非常新,涵盖了Boost和TR1。对各种语言的比较相信很多读者也会兴趣盎然。Herb Sutter系列《Exceptional C++中文版》卓小涛译中国电力出版社《More Exceptional C++中文版》於春景译华中科技大学出版社《Exceptional C++ Style》(新书!)刘未鹏译人民邮电出版社《C++编程规范》(新书!)刘基诚译人民邮电出版社
近年来,Meyers在业界的二号地位已经渐渐被Herb Sutter所取代。Sutter身兼C++标准委员会和微软C++/CLI架构师两个角色,而且长期在CUJ上撰稿,包括生动有趣的“对话”专栏,还坚持主持新闻组中Guru of the Week,对社区的贡献确实很大。当然,Exceptional三部曲,加上与Andrei Alexandrescu合著的Bible级的《C++编程规范》一书,无疑也是他得以确立今日地位的重要砝码。
Exceptional系列也是由条款组成,但是采用提问、解答的形式。准确地说,这个系列完全可以划归高级,因为连Scott Meyers都说自己经常掉入其中题目的陷阱中。书中涉及的语言细节之深,其他地方很难看到。当然,最直接的作用,是进行自测或者测试别人。
我们认为,《C++编程规范》一书是近年来最重要的一本C++新书。之所以这样说,并非因为书中有什么别处没有的新内容,而是因为它的全面性(这本书其实是Sutter和Alexandrescu对博大精深的C++知识以及浩如烟海的C++文献的一次总结和梳理,因此比其他中级图书都要全面)和必要性——本书可以作为游历C++世界的地图,无论你处于什么层次,都可以通过它找到自己的位置,确定前进的方向。书中的文字极为凝练,许多文字都需要阅读各条之后的文献才能透彻了解。这是与其他类似图书另一个不同之处。正因为此,我在翻译过程中,曾经发愿要像清儒注经那样做一个注释极丰富的译本,而且已经为此收集了大部分相关的文献。但是时间显然成了无法逾越的障碍。盼望着还有实现的机会,也希望读者能够助我一臂之力。
《C++高级编程》(新书!)
Nicholas A.Solter,Scott J.Kleper
刘鑫 杨健康 等译
机械工业出版社
与前面介绍的Effective式图书不同,本书是一本非常优秀的中级教程,有些部分很像《C++编程思想》,比如对软件工程的强调。但是本书不侧重语言特性的介绍,而是涵盖更加全面,而且更加贴近实战。书的组织形式比较特别,主体是实例和知识点的总结梳理,但是总的架构又与一般教程相同。如果说其他中级图书都是通过上课来传授驾驶知识的教练的话,本书就是一位陪你上路的真正的陪练。
好了,本月要推荐的图书就是这些,最后我们给出一个推荐的阅读路线:对于初学者,应该从《C++ Primer中文版》第四版、Prata、《C++编程思想》或者《Accelerated C++》开始,当然Horton或者Deitel也可以考虑,在书店里翻看,根据自己的阅读和学习习惯进行选择好了。唯一的忠告是:不要选择国内自编的入门教程。在学习的同时,可以将《C++编程规范》和一本巨著放在一旁,阅读对应的相关段落和章节,如果有时间,做对应的习题。掌握基本特性后,可以对照《C++必知必会》和《C++编程规范》,并试着做一做Exceptional系列中难度较小的题目,检查自己的学习效果。编程实践时可以阅读《C++高级编程》或者《C++编程思想》中的一些段落,当然,其他比较实用的软件工程书也可以。这期间应该阅读Effective系列,并挑选难度合适的Exceptional题自测。经过这样的锤炼,你应该已经基础非常扎实,可以步入C++的殿堂了。
表一TIOBE的编程社区指数
名次
|
名次
|
编程
|
份额
|
变化
|
1 | 2 | Java | 21.31% | +3.92% |
2 | 1 | C | 17.69% | -0.83% |
3 | 4 | C++ | 10.93% | +1.03% |
4 | 5 | PHP | 10.22% | +1.02% |
5 | 6 | VB | 9.56% | +1.93% |
6 | 3 | Perl | 6.05% | -4.53% |
7 | 7 | C# | 3.27% | +0.50% |
8 | 8 | Python | 3.04% | +0.56% |
9 | 11 | Java Script | 2.19% | +0.75% |
20 | 30 | Ruby | 0.45% | +0.14% |
表二Sourceforge.net项目语言统计
语言 |
2006.5 |
2005.11 |
1.Java | 16738 | 19049 |
2.C++ | 16731 | 17914 |
3.C | 15934 | 16586 |
4.PHP | 12175 | 13791 |
5.Perl | 6209 | 6342 |
6.Python | 4542 | 5138 |
7.C# | 2892 | 3830 |
8.Java Script | 2779 | 3488 |
首先我们需要更正 上次专栏 中的两处错误。一是表二Sourceforge.net项目语言统计中两列的时间弄反了,当然不会项目越来越少。二是除了原来所规划的四部分中的“综合/巨著”、“入门”两部分之外,我们还讲到了一些中级图书,这与文中开始所说的“本月是前两部分”不符。感谢于征和马鸿飞两位读者来信指出。
本月将继续C++图书的推荐,除了继续中级图书之外,再推荐一些专题类的图书,根据读者建议,我们将一些高级图书并入专题部分。
另外要告诉大家,上次推荐的Scott Meyers《Effective C++》第三版已经开始在网上预订,即将出版了。
中级(续)
C++沉思 录
Ruminations on C++
Andrew Koenig,Barbara E.Moo 著
黄晓春 译
人民邮电出版社
本书是两位大师级作者从各种杂志上发表的文章中去芜存菁,重新整理更新,汇集而成的一部经典著作。虽然原版出版于1996年,但是作者根据当时的标准草案进行了修改,基本上是符合C++98标准的,没有过时的问题。与前面我们推荐的其他中级图书都不同,本书并不旨在讨论语言本身的具体细节,而是把重点放在如何用C++解决问题上。由于出自杂志文章,Koenig和Moo夫妇娓娓道来的平易风格显露无遗,可读性很强。在有了一些基础知识之后,阅读本书,可以在轻松的氛围中对许多C++特性和功能有更加深刻的领悟。
本书得到了BjarneStroustrup本人的推荐,而且几乎所有C++推荐列表中都不可或缺,可见其重要性。中文译本质量不错,有些令人奇怪的是,此书现在已经很难买到了。
设计模式
Design Patterns
Erich Gamma 等著
李英军 等译
机械工业出版社
显然,任何一份C++推荐书目都不能缺少这部毋庸置疑的经典,虽然除了例子采用C++编写之外,本书的意义并不局限于C++领域。10多年之后,要想真正精通面向对象技术,本书仍然是必由之路。稍微遗憾的是,随着作者之一Vlis鄄sides的去世,本书曾经有过的新版计划已经遥遥无期,很可能会不了了之。即使未来会有新版出现,很可能也不会采用C++代码作为示例了。
初学者阅读本书可能会感觉困难,因为其中精髓很多是出自Gamma的博士论文或者其他作者的学术论文。某种程度上而言,本书很有《论语》之类经典微言大义的味道,不少看起来不大起眼的语句,实际上饱含深意,需要反复琢磨和研习。正因为此,后辈专家们又撰写了许多阐发性的著作,去年底影印出版的《深入浅出设计模式》(东南大学出版社)采用图文结合的方式,可读性极佳。如果觉得这种读图方式有些“轻浮”,《设计模式精解》(第二版即将由人民邮电出版社出版)则是最佳选择,书中透彻讲述了设计模式背后的各个原则,有人称之为《设计模式》的最佳阐释版本。我们认为该书比较有利于初学读者的,是作者用自己学习设计模式的经验来教学,很容易接受。此外,还应该向大家推荐的是James Coplien所著的《Advanced C++中文版》,出版于1991年。准确地说,这本书才是真正的C++模式图书,因为其中讲到的都是语言惯用法(idiom)级的模式。书中提出的CVA(共性与变性分析)为《设计模式精解》发扬光大,作为一种关键的面向对象分析方法,成为后者的亮点之一。阅读此书需要比较扎实的C++基础,因为不少具体的建议已经过时。读者可以参考Amazon网站对此书的一个评论,论者很好地指出了比较重要的过时内容。
C++经典问答
C++ FAQs
周远成 译
中国电力出版社
本书的问答形式对于某些读者而言,可能是最佳的一种学习或者复习方式。本书的素材来自comp.lang.c++新闻组的常见问答,整理成书时,几位管理员花了很大力气扩展充实,最后的篇幅是网上版本的5倍,内容非常全面细致,不仅比较深入地讨论了C++语法和语意中比较容易误解的引用、const正确性、虚函数、构造函数与析构函数、初始化列表、操作符重载等等,还覆盖了异常、模板、RTTI等高级主题,尤为可喜的是,书中还超越C++本身,讨论了面向对象设计问题。
很遗憾,本书的中文版翻译比较糟糕,而且似乎已经绝版。读者可以访问网上版本,虽然没有书全面深入,但是基本的问题都已经包括,令人欣慰的是,网上版本还在不断更新,比如在编程规范一节中就加入了《C++编程规范》的内容和链接。网上版本有两种中文译本,都比较可靠。申旻的简体翻译版本虽然不是最新,但已经比较完备,叶秉哲的繁体翻译版本稍旧,但叶本人是Stroustrup C++著作繁体版的译者,功力不凡,颇具参考价值。
专题/高级
C++标准程序库:自修教程与参考手册
The C++ Standard Library:A
Tutorial and Reference
侯捷等译
Nicolai M.Josuttis
华中科技大学出版社
正如Stroustrup和Lippman等大师教导的,学习和掌握C++的核心之一,就是用好标准库。目前许多C++使用者的问题,也正是由于背负C的历史枷锁,对标准库的认识和掌握不好所致。本书是学习STL的首选读物。此外,Pete Becker所著还未出版的《The C++ Standard Library Extensions:A Tutorial and Reference》是本书的C++0x延续。细心的读者可以看到两本书的副标题完全一样。据说机械工业出版社将出版后一本书。
Imperfect C++中文版
Matthew Wilson 著
荣耀 刘未鹏 译
人民邮电出版社
在上次专栏中,我们举贤不避亲地将本文作者之一所翻译的《C++编程规范》列为近年来最重要的C++新作。有位资历颇深的朋友对此大不以为然。本书就是他心仪的对象。从某种意义上来说,朋友的理由非常充分,本书的深度和广度确实远非编程规范所能比。作者Matthew Wilson是近年来涌现的C++社区新星,除了因为开发STLSoft库而知名之外,他还是《C/C++ User's Journal》停刊之前最活跃的专栏作家,几乎每月都有一篇以上的文章,视野开阔,而且颇多创见,看得出技术上的积累不俗。
Wilson撰写本书应该说是抱有雄心的(公然宣称Imperfect C++当然需要胸有成竹),而成书的质量也的确不负众望,得到了Stroustrup在内的众口称赞。虽然总体而言,本书的目标读者是中高级的C++程序员,但是从一些新手那里得到的反馈来看,许多内容对初学者也有很大帮助(当然,很多内容对于初学者过难)。与Meyers、Sutter和Dewhurst等人讲求凝练不同,Wilson为了历数C++的各种不完美之处,却写出了一本非常完备的书,书中许多概念解释得比大部分教程都好,而且结合了C++最新的发展。比如,我做Mentor时的一个入门级学员曾提到,书中对POD等基本概念的完整讲述,其他书中就很难找到。
当然,书中的深入部分是罕见的深入。但是这种深入又不同于Loki的Alexandrescu和Boost的DavidAbrahams那么追求极限以至于有些阳春白雪,更多地是面向实际应用的,比如二进制兼容、多线程、优化等等主题就是目前C++应用中非常重要但是又很少有书论及的。
如果你自认为是一名专业C++程序员,本书千万不能错过。
大规模C++程序设计
John Lakos 著
李师贤 明仲 等译
中国电力出版社
是的,本书原版出版于1996年,C++98标准制定之前。所以读者在阅读时必须根据自己的C++语言知识,鉴别其中在新标准环境下不适用的建议。但是我们认为,它的价值时至今日仍然没有其他书可以代替。此前,只有Stroustrup在《C++程序设计语言》中用了一个部分来讲述类似的主题,虽然非常经典,但并不解渴。
据朋友告知,国内许多大型软件企业都将此书作为指定读物,这与国外C++为主要开发语言的公司情况完全相同。10年前,本文作者之一初次参与工业级的C++项目时,从一位前辈手中借阅了这本书,它对我的职业生涯产生了不可估量的影响。现在回想起来,自己实在是非常幸运,能够在那么早就获得组件、接口、物理设计等等知识。书中反映了作者在著名的电子设计工具公司Mentor Graphics任职期间积累的大型软件开发经验,材料曾经用于作者在哥伦比亚大学的课堂(美国的大学生们也的确是很幸运的)。应该说,书中讲述的方面是真正一线开发非常需要的,也不知道为何没有更多著作跟进。有消息说Lakos本人正在写一本《ScalableC++》,讨论C++组件,真是非常值得期待。
C++设计新思维:泛型编程与设计模式之应用
Modern C++ Design
Andrei Alexandrescu 著
侯捷 等译
本书出版时曾经引起不小的轰动,作者也因此奠定了炫技派先锋的地位。可以说,书中以及作者开发的Loki库将泛型编程和模板技术发挥到了极致,对于读者了解这种C++机制的强大很有好处。但是,正如Stroustrup所批评的,过于精巧的设计并不能很好地用于实际。所以我们建议读者将本书作为开眼界之用,无需死钻牛角尖。有类似性质的书还有Boost代表David Abrahams所著的《C++ Template Metaprogramming: Concepts, Tools,and Techniques from Boost and Beyond》,但个人以为,Boost代表的方向更为正确,值得关注。模板元编程与目前很多人视为编程语言发展方向的DSL(领域专用语言)关系非常密切,很可能成为C++迎接新浪潮的关键技术。事实上学院派的C++大作《产生式编程》的作者Krzysztof Czarnecki目前就是在研究如何用C++实现DSL。
C++网络编程,卷1,卷2
Douglas C.Schmidt 等著
本书两卷分别由华中科技大学出版社和电子工业出版社出版。
网络编程显然是C++非常重要的应用领域,由于此前缺乏库的支持,相关图书一直非常缺乏,本书的出版一定程度上弥补了这一空白。但是本书一部分内容更接近于ACE文档,而其他部分总体上又比较学院化。所以第二作者又编写了《ACE程序员指南》(中国电力出版社)作为补充。此外,与ACE展开竞争的ICE也是一个非常不错的网络程序库,没有相关图书出版。
能够归入高级的,还有一本好书:Stan Lippman的《深度探索C++对象模型》(华中科技大学出版社)。要想对C++的内部机制了解通透,此书是不可缺少的。
C++其他非常重要的应用领域还包括嵌入式、图形图像、框架设计等等,但是目前都没有值得推荐的图书。在网上一番搜索之后,我们发现未来一段时间,国外即将出版的C++类图书非常有限,看来希望要寄托在国内的作者身上了。
附记:在撰写本文过程中,ACCU上的书评和Comeau Computing的书单( http://www.comeaucomputing.com/booklist/ ),以及荣耀先生和孟岩先生以前发表过的推荐书目对我们帮助很大,在此表示感谢。