首页IT科技c++书知乎(专家书单推荐:C++藏书阁(上))

c++书知乎(专家书单推荐:C++藏书阁(上))

时间2025-09-19 04:56:05分类IT科技浏览4892
导读:专家书单推荐:C++藏书阁(上 2006.08.29 刘基诚 刘江...

专家书单推荐:C++藏书阁(上)

2006.08.29 刘基诚 刘江

共有评论(0)条

发表评论

收藏

接下来              ,我们还是按照推荐Ja鄄va图书的老套路                  ,将C++图书分为综合/巨著            、入门                    、中级和专题四部分介绍              。本月是前两部分                  。因为已有的相关推荐已经比较成熟      ,我们把重点放在近来出版的新书上      。

选择现在来推荐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的编程社区指数

名次

2006.5

名次

2005.5

编程

语言

份额

2006.5

变化

2005.5

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

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
瀑布流式页面布局代码(JS实现瀑布流页面布局)