大师的书需要慢慢赏评

        首先需要说明的是:我是参加CSDN学生大本营上的华章“读IT经典”活动,作为试读员而撰写的这篇书评,由于收到试读的图书后只有三周的阅读时间,对于这本经典之作《C++程序设计语言》的评价,我有点诚惶诚恐。大师之作需要慢慢评赏,囫囵吞枣是学不到多少东西的。而且因为最近忙着毕业答辩,也抽不出太多的时间来阅读本书,我也不太可能给全书一个整体的评价,我将尽力将我已阅读部分作一个客观真实的评价,希望能对想买这本书的朋友们有所帮助。对于剩下的没有阅读的部分,如果将来时间允许,我还会再作一个补充。

如果朋友们想用这本书进行C++语言的入门,那么我奉劝您将本书放回书架,这本书不适合没有C++基础的读者,甚至也不太适合只有初级C++基础的读者,如果想入门,我推荐还是看《C++ Primer》。本书适合那些对C++中类、模板等有一定了解并想有进一步了解的朋友,适合那些想了解C++语言中的一些特性是如何设计出来的以及为什么要这样设计的朋友,也适合那些有着一些开发经验,想在此基础上进一步提高,进一步的把握软件设计的朋友们。如果您是后面三类人的某一类人,那我强烈推荐您看一下这本书,市面上任何一本关于C++的书籍最终还是要回归到本书。Stroustrup博士作为C++语言的设计者,对C++语言的理解可以说是超过了世界上任何其它的C++使用者,读他的书,您不仅可以从技术了解到C++语言特性,还可以从哲学上理解到这项C++语言特性是如何被确定的,由此看来,我觉得Stroustrup博士是一个哲学家而胜似一个工程师,他对语言特性的深刻的理解让我十分惊叹,比如他说过“好的设计和不出现错误都不能仅由某些语言特征的存在或者不存在来保证”,又比如他说“两个语言间的差异(这里他以C和C++举例)必须或者是很小,或者是很磊,以最大限度地减少错误和混乱的发生”,再比如他又说“如果在某个地方有一个选择,简化语言的定义或者简化编译器,那么我们一定选前者”。读Stroustrup博士的书,不仅仅是在理解C++的技术细节,更重要的是体会他那深邃的设计思想,这让我想起了一句话:“科学起源于哲学”,C++语言的设计中到处都有哲学的影子,朋友们如果能有机会看看这本书,那请用心体会,一定会有不少收获。
这本由华章公司出版的十周年中文纪念版有个很鲜明的特点:每个章节前面都引用一句名言(英文原版即是如此),这些名言或者出自哲学家,或者来源于各文学作品,又或者来源于众望所归的大师。每个章节的名言与各个章节都有一定的联系,有些浅显易懂,比如第8章名字空间和异常的那句话“任何规则都不可能如此一般,以至不能容许任何例外(异常)”,有些则晦涩难懂,比如第4章类型和声明有句话“只有到崩溃的那一刻才可能达到完美”。可能作者将这些名言放在这儿就是为了能让读者有所感悟,至于是不是有一个统一的标准答案,那倒是没有必要了,毕竟一百个人眼中有一百个哈姆雷特,大家都是有独立思考的人。
我比较欣赏的是作者在书中的一句话“从来就没有任何东西能够替代智慧、经验、常识和好的鉴赏力”,Stroustrup博士提出了一些在C++学习过程中的忠告,但是他同时又指出,这些忠告并不是准则,并非万古不变的定律,它们只应使用在应该使用的地方。这和我们接受的教育“师长的忠告永远是对的”有点区别,比如大学里老师会一直教导我们不要在程序中使用GOTO命令,这样会破坏程序的结构,但是真的就不能使用吗?我看未必,不然GOTO命令也不会一直存在于C++语言中这么多年而不被剔除了,任何事物,存在即是合理的,使用GOTO可以让程序快速跳到某一段代码,这样对应带来的是效率的显著提高,只要程序在自己可控制的范围内,使用一下GOTO也未尝不可?我们从小到大一直被灌输着这样一种思想:要按家长说的话做,这样才是好孩子。等到后来我们做习题,习惯就是先翻一下答案,看看答案怎么样,而不是自己先去思考。我上次还在百度知道里面看到一个提问,问的是自己做的软考试题答案和网上提供的答案有很多不同,自己都有点担心过不了了。我想说一句:你怎么知道网上的答案就是正确的,要知道国家软件考中心是不会提供当年考试题的答案的,所谓的参考答案只是一些所谓的专家做的答案,正确率如何不可而知,如果相信自己是正确的,那请去证明他,比如查找资料,询问同学或老师,不要只相信那一份所谓的答案。我们被教育的结果就是认为正确的答案只有一个,真的只有一个吗?Stroustrup博士在书中对这个问题说不,所以也请大家有机会能够认真阅读这本书,看看同一问题的不同思考方式,肯定能给朋友们耳目一新的感觉。
我在当当网上也看了不少读者关于本书的评价,比如说这本书的翻译如何如何的烂,但就我所看的这几章而言,翻译应该还算是可以的,有不少句子确实不太好懂,但是多读几遍也能够了解,翻译者还对一些普通读者不太理解的概念进行了解释,而且对Stroustrup博士这本书中的一些错误还进行了一些说明,毕竟翻译者也是北京大学信息科学系的教授,我想再差肯定也会比我们好的多吧。我想大家说翻译者翻译不好的原因主要在于:Stroustrup博士的文风比较晦涩,所以翻译成中文有很多都不符合中国读者的阅读习惯。确实有一些我实在看不懂的句子,不过我找到对应的英文版还是看不太明白,可能是我的功力火候还不够,大师的书本就需要多次阅读,想一口吃成胖子怎么可能。不过如果能够阅读英文版的话,我推荐朋友们还是读一下英文原版的,翻译后的句子肯定会在表达上少了点什么。
作者在书中还建议朋友们如果要学C++的话,不要经历C然后C++的过程,直接学习C++是最好的方式,因为这样可以让你跳过比较底层的信息转而学习C++的高级特性,学习完C++后可以再学一下C,对于C的理解会有更大的帮助。这也正是我学习C++的路线,大一上开始学习C++课程,等到大三时需要用到C的知识又转而学习C。我很庆幸一开始就学习的C++,因为C++给我提供的思考方式就是以类和对象交互为思考基准,而非C中的结构化思考方式,这对我们开发现代化的程序有较大的帮助,所以如果你打算学习C++,还是请先跳过C直接学习C++,先入为主是十分重要的,这也是我当初学习C++的一个体验。举个浅显一点的例子,比如你打字时使用的输入法,如果你是先使用五笔再使用拼音,你会发现拼音是多么的不方便,相反也是一样;人生中第一次学习到的东西对人以后生活影响是非常大,所以不仅仅是学习C++,大家也可以考虑一下其它的方面。
最后我还想说一点的是:对于从事C++的朋友,这本书应该是必备的,可能对于你开发项目没有过多的帮助,还没有“软件项目开发实例”等书实在,但是这本书可以提供给你一个全新的思考方式,对于现在的你可能没什么作用,但是将来的某一天可能正好就会使用到你当初看到的思想呢?Stroustrup博士在书中详细的陈述了某个语言特性的由来,由什么因素所激发的,又经历了什么样的发展和修改才形成现在的样子,这些对开发者进行软件架构、软件维护、软件演化等都有莫大的裨益。所以如果朋友们能有这么一本书,我希望大家可以好好看、认真看,反复揣摩Stroustrup博士的思想,相信你的素质会有很大的提高,不论是从开发能力上,还是对事物的把握上。好了,我就先写这么多,最近毕业设计比较忙,也没有多少时间,以后如果有机看这本书,我再进行相应的补充,希望朋友们都能有所收获。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值