心血来潮,整理了一下学习C++应该读的书单,当然我并没有都读过, 权当作一个ToDo List
吧。
书单
本书单暂不包含C语言相关书目,当然了想学好C++,C语言的经典图书也应该读一读。
书名 | 作者 | 备注 |
---|---|---|
The C++ Programing Language | Bjarne Stroustrup | C++之父的TCPL |
C++ Primer Plus | Stephen Prata | |
C++ Primer | Stanley B. Lippman | |
Inside The C++ Object Model | Stanley B. Lippman | 《深入探索C++对象模型》 |
Effective C++ | Scott Meyers | |
More Effective C++ | Scott Meyers | |
Effective STL | Scott Meyers | |
Modern C++ Design | Andrei Alexandrescu | 《C++设计新思维》 |
Think in C++ | Bruce Eckel | 《C++编程思想》 |
下面开始扯淡
说开来
《C++ Primer》PK《C++ Primer Plus》
初见这两本书,你肯定认为后者是前者的续作,很多人也误以为“primer”是入门,而“primer plus”是进阶。确实从名称上来说,很容易给初学者以误导。实际上这两本书的作者是不同的,分别是Stanley B. Lippman和Stephen Prata。所以说“primer plus”并非“primer”的续作。
另外多说一句,从风评来看,《C++ Primer Plus》更适合C++入门,而《C++ Primer》才是学习C++的进阶之作。
此外呢,“primer”的作者Stanley也是书单中《Inside The C++ Object Model》(译:深入探索C++对象模型)的作者,此外他还写了一本非著名经典《Essential C++》,不过这本书貌似毁誉参半。另一方面呢,《C++ Primer Plus》的作者Stephen Prata也是C语言经典图书《C Primer Plus》的作者。
Scott Meyers与Effective系列
Effective系列的三本书籍的知名度在程序界丝毫不亚于两本primer。作者Scott在十年时间内不紧不慢地向世界C++程序员(或编程图书界)交出了三份满意而出色的答卷。
除了书籍本身的优秀质量外,作者本身关于著书的态度之严谨也值得我们尊敬。通过《Effective STL》一书的序言可以看出,作者很早就有了写STL书籍的想法,但是这一想法忍了好几年,他自己坦言期初自己对STL并不熟悉,程序库的不完善,还有编译器对模板的支持有限。一只多了许多年以后,条件充分的时候他才动笔。这一切既是对自己负责,也是对读者负责。Scott的严谨态度从中可见一斑。
书单上还有一本《Modern C++ Design》(译:C++设计新思维),亮点是讨论了智能指针和设计模式。看读者评论最多的一句就是奇技淫巧过多,但从某个角度也拓展了读者思维。总之也有点毁誉参半的味道。Scott也为此书作序,期初看这个序的时候,我就以为看错书了,开头几句怎么和《Effective STL》差不多。都是表达了自己想写关于模板/STL的内容,但是由于种种原因没能实现。这个序是2000年写的,在一年以后Scott出版了自己的书籍《Effective STL》。
Bruce Eckel的编程思想
Bruce Eckel著有两大明著《Think in C++》、《Think in Java》,通常译作《C++编程思想》和《Java编程思想》。以《Java编程思想》横行天下,基本上是Java程序员无人不知。
《C++编程思想》涉及到底层概念偏多,有时会深入到编译器甚至汇编语言的级别。
Bruce的《Java编程思想》一书卖的最好,在其序中Bruce也描述了自己从C++到Java的学习经历。OK,很多人好像就误以为Bruce抛弃C++,从此热捧Java了。其实不是的,Bruce是C++标准委员会的成员,参与标准制定。尽管《Java编程思想》一版再版,但他也曾表达对Java语言以及Java之父Gosling的不满。当然了,这不应该是我们所关心的:-)
英雄与时势
书单上这些书最初的版本基本上都是出自上个世纪90年代,我想那一定是一个风云变幻的年代,同时也是英雄辈出的年代。
就像拿破仑与法国大革命,如果没有拿破仑,是否会有法国大革命。同样的,在那样的历史背景下,如果没有这个拿破仑,是不是还会出现另外一个“拿破仑”。
就像这些大师们(包括但不限于经典图书的作者)一样,是他们的努力传播了知识,为世界程序员进行了启蒙。当然编程语言并不因这几位作者而存在,也不因这几位作者而消亡。试想一下,如果那个年代这些大师们都不曾存在,是否其他人也能写出类似的经典呢?这个答案,我不知道。历史没有如果,不容假设。
跑题
纵观书单,以及我对图书作者的简介,可以看出:**许多你读过(或者想读)的经典书籍(各个语言),其作者有时竟是同一人**。
Scott的Effective系列自不必多说,当我发现《深入理解C++对象模型》的作者和《C++ primer》的作者是一个人的时候,当我发现Stephen不仅写了《C++ primer plus》,还写了《C primer plus》(曾经枕边书)的时候,当我学Java的时候看了《Java编程思想》,后来深入学习C++的时候,下载了《C++编程思想》,比较了一下,作者都是Bruce。
这时,我会有一种小时候发现《射雕》、《倚天屠龙》……《鹿鼎记》竟出自一个人的手笔的时候的惊奇感觉。
当然,你可能笑我,觉得这几本书你只看书名,就知道是一个人写的了,然而Java和JavaScript却并不这样认为。
说到这里,不得不让我联想到一个人: W. Ricahrd Stevens。 Unix/Linux程序员应该都读过/听说过他的编程经典《APUE》和《UNP》两卷本。这两本书(或者说三本书)对Unix/Linux程序员来讲就像丐帮的打狗棒和降龙十八掌了吧。
此外,曾经让我惊奇地是,Stevens老先生竟然还是《TCP/IP协议详解》(三卷本)的作者,我惊呆了。不过老先生在1999年因为意外事故阖然长逝,还不到50岁,真是计算机界一大损失。
最后缅怀一下Stevens先生。
然后对各位说一句:哦,对不起,跑题了。