单独开一篇文章,之前零零散散的书评散落在笔记和微言中,没有具体辑录到一块,不方便索引。以后读过的技术类的书籍之后我会写一些评价就都放到这里来了。因为评价对象是技术书籍,只言片语也不能描述所有的技术细节,本文立意也非“技术笔记”而是“书籍评价”,所以我不会在这里涉及太多书籍中描述的技术细节,只是我作为一个普通读者的阅读感受以及分享我个人的阅读技巧,若其中对某些书透露出褒贬之意均为我个人对书籍的评价无任何贬低作者的意图。
我之前也推荐过一些书籍:学习C/C++的一些书籍和工具,但是并没有写出比较详细的评价,可以作个简单参考,如果有空闲我再详细评价一下之前读过的书籍。
还有读TC++PL、C++Primer和ISO C++,这篇文章对三个评价对象的描述比较详细。
最近(2017.05.06)读了几本书(都是C++相关的),来简单评价一下。
C++必知必会
篇幅很小的一本书,汇集了数十个个C++中比较重要的概念以及常用的设计模式。但是也碍于篇幅的限制,每个条目基本也都是简单提一下然后一笔带过。或许正如作者在前言中引用马克吐温的话:
一本书之所以成功,不在于书本身的内容,而在于它的未尽之言。
以及爱因斯坦的:
······尽可能简单,但不过分简单。
作者肯定做到了这两点(2333)。几乎每个item仅仅占据了一到两页的篇幅,而且有些item提到的东西并不简单,并非读一下就能有所顿悟的,想要更全面和深入地了解还要翻阅各种资料,《TC++PL》是个不错的选择。书里不少的概念作者也是从”C++”编译器实现的角度来阐述的,而且并未涉及C++1z的内容,还具有auto_ptr
等已经在新标准中deprecated
的特性,从新标准(C++11/14)的角度来看内容有些过时。另外,不同于任何一本讲解C++语法概念的书,这里也仅仅只是列出了C++里一些比较重要的特性还有一些设计模式。如果已经对C++里的那一套东西熟知之后看这本书的意义不大。
总体来说这本书的定位还是比较尴尬的:不是面向初学者的书,但是非初学者也已经对这本书里的大部分内容已经了解,而本书也不定位于深入探讨的范畴,入手阅读没有太大的实际意义。而且本书中也略有部分不符合C++标准的编程技巧,阅读时注意不要跳坑。
有些item和Effective C++的内容略有重叠,不过不多,但是远没有Effective C++的高屋建瓴。
满分十分的话,这本我打五分。
C++编程规范:101条规则、准则与最佳实践
这本书的篇幅也不是很大,200页左右,但是不同于上一本书,这本书的干货还是超多的。
涉及到了很多具体的C++编程的问题的分析,主要是从“如何使用C++写出健壮的代码?”角度来分析的,涉及到了不少的编程理念。条目的描述条理也很清晰,举出来的例子也很让人信服,也列出了各个描述条目的例外情况。有种辩证法写书的风格。其实我觉得:通用的“最佳实践”本身就是一个伪命题,只有最合适的最佳实践,没有最好的最佳实践,只有具体问题具体分析。恰好这本书的撰写风格可以从辩证的角度来看待问题,不仅仅只是阐述一些编码技巧,这是最重要的。授之以鱼不如授之以渔嘛。
本书的作者是大名鼎鼎的Herb Sutter
——C++标准委员会主席,涉及C++语义的内容是很有启发性的:通常会产生歧义的理解的概念也进行了描述,但是不够具体。如果之前没有接触过很容易懵逼不知道他具体讲的是什么。同样碍于篇幅的限制,有很多东西也只是一笔带过。本书的面向读者群体也十分清晰:非初学者,希望了解更多C++的编程技巧以及“最佳实践”。我认为读这本书的前置技能是要读过《TC++PL》或者《C++ Primer》,当然,如果能够边看边从C++标准中找到相关描述更是最佳的阅读方式。
另外,本书和《Effective C++》也是有部分重叠的内容,但是并非只读一本就可以,《Effective C++》中描述的更加详细。反正书籍也不贵,从书中学到一些东西就肯定值回书价了,买书读才是最划算的投资。不过本书最大的问题也是有些问题描述的不够深入和全面,更多的东西还是需要翻阅其他的书籍和材料。
参照上面同样的评分标准,这本书我打7分。
C++编程剖析:问题、方案和设计准则
本书的作者同样是Herb Sutter
,我认为本书的读者是“对C++语言特性”感兴趣的群体,虽然书里提到了很多的准则/特性分析,但是在实际的项目中很多都几乎用不到,但是确确实实书里讲到了很多的干货。
从一些C++标准库实现以及语言特性的示例代码分析入手,给出编程准则。不同于上面一本书,提到了很多编程理念的东西,本书提到的都是更实际的C++语言技巧。不过这里面讲到的东西有些也是很冷门的特性,而且也是依赖于编译器实现的,如果书中的代码你在自己的编译环境中得到了和书中不同的结果,不要怀疑人生也不要嘲讽烂书,只是书里面讲到了一些依赖编译器实现的特性,至于如何分辨一个特性“是否依赖编译器实现”,这个貌似没有书里详细提到过(至少我看过的书里都只是只言片语一带而过),只有去翻C++标准了。书中对实际的代码分析后都会列出具体的准则描述,重要的是从书籍中的前文描述理解所蕴含的思想以及了解C++特性的坑。
本书的阅读条件与上面相同:至少熟悉C++的语法规则,推荐书籍《TC++PL》。
而且书中提到了很多C++标准,但是是比较老旧的c++03标准,略微有一些问题从新标准的角度看不够全面,但是大多都是鞭辟入里完全称不上过时,尤其是作者从“C++标准委员会主席”的角度来看待C++的发展与特性的分析是十分独到的,尤其是类的设计部分可以与《Inside The C++ Object Model》组合阅读,效果俱佳。个人觉得可以作为《Effective C++》之后最建议的阅读C++工程技巧及深入探讨其中原理的书籍。
参照上面同样的评分标准,这本书我打8分。
推荐每一个C++程序员有时间应该读读《C++编程规范:101条规则、准则与最佳实践》和《C++编程剖析:问题、方案和设计准则》这两本书,因为里面讲述了很多C++语法书(TC++PL/C++Primer)中不会提到的东西,相比较而言可以深入的去理解C++的语言特性以及一些编程技巧,我认为这两本书比较好的阅读方式为:如果碰到了书中提到的自己感觉不明确的概念,最好翻阅C++标准查询相关描述,效果最佳。至于第一本《C++必知必会》则可有可无。