痛并快乐着的C++学习之旅

 
痛并快乐着的C++学习之旅
——书评《Exceptional C++》
 
       “编程是件快乐的事情,它的快乐来自如下几点:第一、……;第二、……;第三、……;第四、这种快乐是持续学习的快乐;最后、……”,在其经典巨著《人月神话》中,Frederick P. Brooks Jr如是说 [1]。是的,作为一个幸运的成为程序员 [2]的家伙,我们在平时的工作中不止一次地体会到了Brooks在书中所描述过的快乐。但是,套用一句经典的台词:“快乐总是短暂的,换来的便是那无尽的痛苦” J [3]。同样还是在《人月神话》中,Brooks也提到:“然而这个过程并不全都是快乐……”。
       然而,作为一篇书评性质的文章,本文的重点并不是告诉大家编程过程中的苦与乐如何如何;而是要竭力向读者你推销将要介绍的书籍的好处及缺点(当然,缺点肯定是一带而过了)。上面这段话的实际作用也只是为了让我更好地转入到我想要叙述的事情之中。现在我将开始转入到了本文的重点,向大家推荐一本讲述C++的经典书籍——《Exceptional C++》。
       众所周知的是,作为一门编程语言,C++一直以来都是以难学难用而“著称”,不过作为一门重要的系统级的编程语言,很多时候我们又不得不去面对这门“强悍”的语言。为了让大家更好地学习和掌握这门语言,C++社区做了大量的工作,编写了大量的书籍来讲述C++的方方面面,其间也涌现了大量的经典C++书籍,如:百科全书式的《The C++ Programming Language》 [4];参考手册式的《The C++ Standard Library》;经验条款式的《Effective C++》;独树一帜专攻某一面的《C++ Template —— The Complete Guide》、《Inside C++ Object Model》……等等等等,这一切也让学习C++的过程成为了一条“痛并快乐着”的经历——痛是因为学习的过程,快乐是因为学习的收获。故此有人曾经说过,评价一个C++程序员的水平,从他看过的书籍列表中就可以得出个大概;并且这种言论在实际中也拥有颇多的拥护者,由此也验证了C++的学习之艰难。
       更而甚者,不是每本C++书籍都是读起来让人心情愉快乃至一阅千页的,很多的时候,为了让你更好地领会到“从错误中学习才是最有效的学习”,在很多的经验条款性质的书籍中,作者都会在其中巧设机关,等待着傻呼呼的读者你自己掉入他所设的陷阱之中,然后可怜的你就成了作者最忠实的听众,跟随着他一次次地出没于C++的惊涛骇浪之中并且从中学会了如何避免被风暴所卷入的技巧,从而使得自己逐步成为一个合格的弄潮儿。在这些作者以及他们所撰写的书籍中,又以C++标准委员会现主席Herb Sutter老兄以及他编写的Exceptional系列(已出版的包括:《Exceptional C++》、《More Exceptional C++》、以及《Exceptional C++ Style》)为甚。作为现阶段的C++社区第一人(C++的创始者Bjarne Stroustrup现在已经算是半退隐了,故笔者斗胆将其从宝座上拖下 J),Herb Sutter的简历我就不愿花费宝贵的篇幅去描述了,我们只来评论他所写的书籍以及他的猎物。看看他的枪口中都有谁撞上去了吧,Scott Meyers!Wow!又是一个如雷贯耳的名字!看看他都说了些什么:
我将 GotW Guru of the Week ,每周大师)的发音读作“ Gotcha ”,这可能是比较合适的。当我将自己对书中问题的解答与 Sutter 所给出的解答相比较时,我总是会掉入他(和 C++ )给我设置的陷阱中,虽然我不是很情愿地去承认这些,但事实确实如此。对于我所犯的每个错误,我都好像看到了 Herb 在微笑地说着“ Gotcha! ”。
—— Scott Meyers Preface Of Exceptional C++
虽说作为应邀来为好友书籍撰写序言,Scott Meyers可能会稍微夸大了一下自己的失误;但做为新闻组中最负有盛名的常规性活动,Guru Of The Week对参与者的要求确实不是一般人能够满足的,其问题的深度也是远远超出大部分人平时所能考虑到的,可以不负责任地说一句,能够参与到Guru Of The Week活动中并提出自己见解的人,其水平绝对到了我们通常所指的“高手”之列。即便如此,Guru Of The Week的产生速度实际上还没有达到Scott Meyers所说的“每周一位”,由此可见,成为Guru Of The Week那是多么困难的一件事情。幸运的是,作为文明的收益者,我们不必再“闭门造车”,自行去思考出那些变态(?)的GotW问题的答案,而是可以直接从前人的经验中直接吸收到自己所欠缺的那部分知识。更为幸运的是,Herb Sutter还特意为我们这些读者将这些问题中的部分及其答案修正和重新整理,并且分门别类地把它们做成不同的系列供我们阅读、参考、以及查阅。虽说在最开始一遍的阅读中,笔者近乎“逢陷阱必踏”,简直是苦不堪言,痛彻心扉啊~~,但每当思及Scott Meyers的上述言论以及自己从书中所得到的巨大收获,我又“腰不酸了,背不疼了,腿也不抽筋了……”;并且隔段时间时不时地翻阅该书,又能让我得到不同层次上的收获,正所谓:“痛并快乐着”,不外如是!
对于大多数的国内程序员来说,很难直接接触到Exceptional C++该书,更不用说用他们所熟悉的母语来体会该书中的高深内容。幸好最近机械出版社华章公司决意引进该书(中文版和影印版)并在国内出版,由于得益于多年来和该系列丛书编辑以及本书中文版译者之间保持的良好关系,我得以第一时间(如果刨去译者和编辑的话)翻阅了该书译稿,其间阿谀奉承的词也不多说了,总的来说,译者聂雪军并不是一个以华丽文笔见长的技术人员,但对于书中技术内容的把握确实可以达到“用平实的话来准确流畅地复述书中的内容”的程度,由于该书难度颇高,我个人觉得平时的描述可能会更适合一点,过于华丽的话语反到有可能会导致读者在接受Herb Sutter的教诲的过程中产生巨大的挫折感……
       废话说的差不多了,也该收笔了,嗯,就用如下格式作为结束语吧:
书名:Exceptional C++
类型:经验条款式
适宜C++人群:中级->高级、高级
警告:程度不够者切莫轻易尝试,以免遭受巨大打击
参考基础读物:Effective C++,The C++ Programming Language,……
 
王昕
2006年10月于上海
 
王昕:多部C++著作的译者,经验丰富的C++程序员。曾与孟岩、王曦等共同创建Cview技术网站。


[1] 参见《人月神话》第一章:焦油坑
[2] 此处,我用了“程序员”一词来泛指所有从事编程的人员
[3] 没有听说过此句台词的人,建议他去重温《大话西游》一百遍啊一百遍
[4] 此处对于每一类型的书籍,原则上我只列举一本,只有在“独树一帜专攻一面”的类型中除外

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值