《C++ Primer Plus》,并不如推荐的那么好。而且翻译水平实在让人泪流满面,不得不与第六版英文原版对照阅读。
之所以用此书作为学习 C++ 的入门书,是因为在网上看到众人推荐。当我认真仔细地阅读完这本书后,怀疑推荐此书的人是否都是人云亦云。该书从 C 的角度去学习 C++,而不是从 C++ 的角度,因此第五版与第六版都不适合 2012 年学习 C++ 初学者。
强烈推荐《C++ How to Program》,该书知识逻辑编排合理,语句通顺简明扼要,例题难度适中,讲解和注释都很详细,非常适合没有编程语言基础的初学者。
如果有其他编程语言基础的初学者可以直接看《C++ Primer》或者《The C++ Programming Language》。
从三个方面说明此书的问题:
一、知识体系编排
1、书籍总体编排,逻辑松散,没什么体系,学后感觉知识点像一盘散沙,错误不少。
2、学完这本书后,很难形成知识体系树,很难记住书中的各种散乱的知识点。虽说本书中每章末都有总结,但基本是按照章节里基本知识点原来的顺序逐个复述出来。
3、书中的程序例题难度跨度不均衡,复杂的例题讲解不清(可参看第 12 章有关 ATM 的队列模拟例题)。
4、作为一本入门级的教科书,之前讲过的知识,本应融入往后的例题或文字中,使之经常出现,让初学者渐渐熟悉,但本书经常介绍完一个知识点在之后的章节中却只字不提。难道是考验人过目不忘的本事。例如,提到 C++ 的类型转换后,却没有再使用过 C++ 的类型转换,而是使用 C 语言的类型转换。
5、用 C++ 编程的思想体现不出来,随处可见 C 语言的影子。
二、新标准并未融入书中
1、此书的第六版,英文原版,添加 C++11 标准的内容,但 C++11 的内容并没有融入书中,只是简单介绍新标准的知识点,完全强硬塞入。第六版仅比第五版多一章,在第十八章加入 C++11 内容。
2、第五版与第六版的程序例题基本一样,可以说没有改动。第五版是 2004 年 11 月 25 日出版,第六版 2011 年 10 月 28 日出版,跨度七年,却没有重新编排,完全是圈钱行为。(也正是第五版与第六版几乎没有改动,才可以对照着英文原版第六版阅读。
三、错误超多
1、不知道这本书是否有人校对过?! 所谓的印刷错误、笔误太多。第五版的错误,到第六版还在,太强大了。
2、勘误表基本没有用,此书一千多页(英文原版),勘误表上只有前四百七十八页的勘误,而且勘误表上错误和改正内容完全一样。