`
izuoyan
  • 浏览: 9224050 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

痛并快乐着的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!又是一个如雷贯耳的名字!看看他都说了些什么:
我将GotWGuru of the Week,每周大师)的发音读作“Gotcha”,这可能是比较合适的。当我将自己对书中问题的解答与Sutter所给出的解答相比较时,我总是会掉入他(和C++)给我设置的陷阱中,虽然我不是很情愿地去承认这些,但事实确实如此。对于我所犯的每个错误,我都好像看到了Herb在微笑地说着“Gotcha!”。
——Scott MeyersPreface 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] 此处对于每一类型的书籍,原则上我只列举一本,只有在“独树一帜专攻一面”的类型中除外

分享到:
评论

相关推荐

    c++学习笔记精华版

    ### C++ 学习笔记精华版 #### 一、C++ 语言概述 **1、历史背景** - **C++ 的江湖地位** - Java、C、C++、Python、C# 是当前主流的编程语言之一,而 C++ 在这些语言中以其高效性和灵活性著称。 - **C++ 之父 ...

    Visual C++ 2010学习版.zip

    安装完成后,用户可以启动Visual Studio并新建C++项目,开始编程之旅。 03 VC2010学习版-安装教程.pdf 文件是关于如何安装和配置Visual C++ 2010的详细指南。教程中可能会包含以下内容:下载安装包的链接,系统需求...

    第2章 开始C++之旅.

    C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程方式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。

    C++最经典的学习手册代码

    在C++的世界里,学习之旅首先从基础语法开始,包括变量、数据类型、运算符和流程控制语句。C++提供了丰富的数据结构,如数组、指针和结构体,这些是理解程序内存管理的关键。其中,指针是C++的特色之一,它允许直接...

    c++学习(apk)

    C++学习是Android客户端目前最全面的免费离线C++学习书籍,提高C++二级考试成绩、增强C++自学能力,内容包括: 1、C++数据类型、控制语句、循环、数组等基础 2、C++逻辑算法练习题 3、C++函数、指针 4、C++内存...

    [C++入门经典(第3版).pdf

    本书主要介绍标准的C++编程语言,涉及C++的语法,面向对象的功能和标准库等所有基本内容,阅读本书将获得编写C++应用程序的所有必要知识

    3D角色扮演网游《风火之旅服务端》完整C++源码

    风火之旅服务端完整源码,这个是真正的风火之旅服务端源码,并非QQ西游,编译的时候把那些乱七八糟的备注给改掉就可以了,能整理出来相当不容易了,不喜勿下,解压后600MB左右,c++开发。 曾经比较火的一款3D角色扮演...

    poco C++中文学习资料

    POCO C++是一个开源的C++类库的集合,它主要提供简单的、快速的网络和可移植应用程序的C++开发,这个类库和C++标准库可以很好的集成并填补C++标准库的功能空缺。POCO库的模块化、高效的设计及实现使得POCO特别适合...

    C++C++C++C++C++C++C++

    C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++C++

    从java到c++,适合java程序员快速学习c++

    "从 Java 到 C++, 适合 Java 程序员快速学习 C++" 这篇文章旨在帮助 Java 程序员快速学习 C++,通过比较 Java 和 C++ 的区别,帮助读者快速理解 C++。以下是从 Java 到 C++ 的知识点总结: 数据类型和变量 * C++ ...

    学习C++的四个层次(美化版)

    - **《C++程序设计语言》**:由C++之父Bjarne Stroustrup撰写,本书不仅讲解了C++语言的基础知识,还深入探讨了一些高级主题,对于希望全面了解C++的读者来说是一本非常宝贵的资源。 - **《C++程序设计原理与实践》*...

    如何更好学习C++的方法

    在下收集整理出一套学习C++的方法,与大家共同分享学习C++的快乐。

    poco/c++开源库学习资料打包下载

    poco/c++开源库学习资料打包下载,通过网络收集整理,比较多 POCO_C++库学习和分析_--__跨平台库的生成.docx POCO_C++库学习和分析_--__随机数和数字摘要.docx POCO_C++库学习和分析_--_Cache.docx POCO_C++库学习和...

    蓝桥杯算法学习笔记C++B组

    蓝桥杯算法学习笔记C++B组蓝桥杯算法学习笔记C++B组蓝桥杯算法学习笔记C++B组蓝桥杯算法学习笔记C++B组蓝桥杯算法学习笔记C++B组蓝桥杯算法学习笔记C++B组蓝桥杯算法学习笔记C++B组蓝桥杯算法学习笔记C++B组蓝桥杯...

    C++ 学习之旅三 我和超级玛丽有个约会

    【C++ 学习之旅三 我和超级玛丽有个约会】 C++ 是一种强大的、通用的编程语言,尤其适用于系统级编程和游戏开发。在这个学习旅程的第三阶段,作者通过制作超级玛丽游戏来深入理解C++,从而获得了对C++语言更深刻的...

    c++经典100例(很适合初学者参考学习)

    《C++经典100例:初学者的宝典》 C++是一种强大的、通用的编程语言,以其高效性、灵活性和丰富的库支持而闻名。...所以,如果你正在踏入C++的世界,这个资源无疑是你的理想伙伴,助你在编程之旅中稳步前行。

    深度学习C++源码(DBN)

    网上很多深度学习C++源码下载后都无法使用,总是有这样活那样的错误,但本源码可定好用,只要装了VS 2013就行,没用第三方库。 这是一个深度学习--深度信念网络(Deep Belief Network)的C++源码,例子中带有数据,...

    C语言/C++基础之爱心程序源码

    C语言/C++基础之爱心程序源码,适合初学C语言/C++的小伙伴学习研究,博客中有对应的讲解和演示,避免走弯路,费时费力。也真心希望能够帮助正在苦学C语言/C++ 程序设计的小伙伴们,你们的成长是我最大的幸福

    A Tour of C++ 2nd_Edition C++语言导学(英文版 第2版)

    c++之父的A Tour of C++第二版,新增介绍了c++17以及c++20的一些特性

    学习c++的课件

    很好的一份课件,找了很久才找到的一份c++学习课件分享给大家,希望对大家有帮助

Global site tag (gtag.js) - Google Analytics