Essential C++
C++ Primer
Accelerated C++: Practical Programming by Example
以上的三本书是我最推崇的C++教程,我对它们进行过细心的阅读,感觉受益匪浅,因此也不遗余力地向您推荐。
《Essential C++》(《Essential C++中文版》,华中科技大学出版社,2001)出自久负盛名的《C++ Primer》作者之一Stanley E. Lippman之手。的确有很多人对这个大师级的人物竟然写这样一本面向零基础的轻薄短小的入门教材感到不可理解。Lippman自己的解释是在参与一部电影的制作时(他拥有艺术硕士的学位!),他由于某种需要必须学习Perl语言,在学习的过程中他“在感伤的心境中明白”,C++ Primer无法扮演初学者导师的角色,那本书太庞大复杂了——对于那些想立刻学会C++语言并进行简单应用的人来说。于是他便有了这本并不太精细却体现语言核心的著作。这本书完全面向零基础读者,您可以对编程一无所知,《Essential C++》仍会引导您走向用C++编程之路,正如它的贴切的书名中所说的,它体现了C++的精髓(脚注:essential,精髓的、本质的)。
《C++ Primer》(《C++ Primer中文版(第4版)》,人民邮电出版社,2006)是一本庞大复杂的C++书籍,由三位世界级的大师Stanley B. Lippman、Josée LaJoie、Barbara E. Moo合力打造。虽然它的书名可以翻译为《C++入门》(脚注:primer,初级读本、入门(书)), 但这本书真得有点“名不副实”,这本英文版有912页的厚书详细地介绍了C++的方方面面和点点滴滴。然而,阅读C++ Primer这本讲解地很深入的教程的确也不需要什么准备知识。不过由于这本书的复杂性,读完Essential C++做基础再读本书却是更多人的选择。如果您想从零开始深入的学习C++,或者您在学习C++的道路上遇到了什么疑难,C++ Primer肯定会帮助您。另外,本书目录和正文中关于名词术语的中英文对照就是参照C++ Primer的附录完成的。
《Accelerated C++》(《Accelerated C++中文版》,中国电力出版社,2003)是另一种风格的C++教程。两位作者Andrew Koenigh和Barbara E. Moo是C++圈子里少见的夫妇搭档,Barbara的参与给本书带来了一种清新细腻的女性化风格。这本书同样也是适用于零基础的读者,同样轻薄短小,但却从最基础的程序语句一路讲到了STL的使用,知识密集度极高,并有很多例子。正如书名所说的,此书极有加速度(accelerate)。书中的某些习题也颇有难度、值得思考。但要注意的是据说本书的中文版(我没看过)的翻译有许多微瑕,请谨慎购买。
最后额外说一句,我在互联网上得到消息说C++之父Bjarne Stroustrup正在写一本C++大学教程。相信这个世界上对C++的理解没有人比Stroustrup更透彻,他的C++著作想来应当质量极高。如果这本书创作完成并出版了的话,相信会是给C++入门者(当然,包括信息学奥赛选手)不可多得的教材。
Ivor Horton's Beginning ANSI C++: The Complete Language
Problem Solving with C++: The Object of Programming
C++ Primer Plus
Professional C++
Absolute C++
C++ How to Program
You Can Do It: A Beginner's Introduction to Computer Programming
上面给出书名的几本书是我推荐的C++教程的第二梯队,它们大部分是近两年才出版的新书,体现了最新的C++教学方法研究的成果。但事实上我并未完整阅读过这些新出的入门书籍,它们入选这个清单是因为它们在C++这个圈子里的名气。关于这些书的评价我参考了很多负责任的书评,并选择性地阅读了这些书的某些部分以进一步核实,这些评价应该是客观、中肯的。
骄傲的Ivor Horton将自己的名字写入书名《Ivor Horton's Beginning ANSI C++》(《C++入门经典(第3版)》,清华大学出版社,2006)。而据说这本经典的C++教程滋养了无数C++程序员。这本书的特点是结构严谨、内容详实,具有“学院派”一丝不苟的风格。若您的学习习惯是一点一点的建立一个严密的知识体系,那么本书很适合您。
《Problem Solving with C++》(《C++面向对象程序设计(第5版)》,清华大学出版社,2005)是Walter Savitch教授根据教学大纲精心编写的著作。它的特点是采用了很多便于读者巩固所学知识的教学特征、在网站上提供了许多课件类的支持材料,十分适宜于在课堂上进行双语教学。它的一大特色是可以自主决定主题的学习顺序,具有面向学生的易用性。
《C++ Primer Plus》(《C++ Primer Plus(第五版)中文版》,人民邮电出版社,2005)享有“程序员和开发人员学习C++的完整教程”的美誉。可见它面向的读者群是“程序员和开发人员”,这当然会影响它的写作风格和侧重点,也就是这本书可能适用于有一定基础、至少学过一门编程语言(如Pascal)的人群。如果您的目标与此书的读者群接近,那么这本书很适合您。
《Absolute C++》(《完美C++教程(第1版)》,清华大学出版社,2005)的作者也是创作了多本畅销书的Walter Savitch。它的编排特色是循序渐进、介绍了统一建模语言(UML)和模式以体现软件工程领域的最新趋势、特别设立了“提示”和“陷阱”两个小节。它似乎是与《Problem Solving with C++》相补充、适合于自学的一本教材。
《C++ How to Program》(《C++编程金典(第三版),清华大学出版社,2002)是畅销书作家Harvey M. Deitel和Paul J. Deitel两位父子的作品。虽然我并不相信这本书像宣称的那样是“全球使用最广泛的C++经典程序设计教材”,但这本书的确也被很多人所推崇和使用。其特点有注重案例分析、广泛使用了UML图等,分布在各章的“对象思想”、“案例分析”、“常见编程错误”、“良好编程习惯”是其特色部分。另外,据说书中的自测和练习很有水准。
《You Can Do It!》(《You Can Do It——C++编程新手互动教程》,人民邮电出版社,2005)的作者Francis Glassborow是一位很有性格的C++专家,他曾对很多负有盛名的C++入门类教材进行过不留情面的批评,而他本人操刀创作的这本C++教材却在出版之后大受好评。这本书的最大特色是作者在写作过程中利用本书对一位从未接触过计算机编程的家庭妇女Roberta进行了从零开始的C++教学,保证那位家庭妇女按照本书提供的内容能够达到作者设置的目标,如果达不到目标则会重写相应的部分。(注:这很像白居易的做法,不是吗?)Roberta阅读后的反馈意见和疑问以及作者详细的解答也包含在书中,相信同样第一次学C++的您很有可能会对这些内容感同身受。
关于C++语言入门教程的介绍就到这里。你可能会产生疑问:为何没有介绍任何一本以中文写作的C++入门教程?这样除去了那一层翻译的“隔膜”,不是更有助于初学者理解吗?事实上,国内对于C++教学的研究水平特别是教材的水准与国外差距太大。例如国内大学课堂上用的那些C++教材,它们的编写思路陈旧甚至僵化,没有一本能真正令人满意。这些教材几乎都是将C++作为“更好的C”来理解和讲述。(脚注:这个理解在1985年之前还是基本正确的。那时,模板、异常处理,还有更激动人心的STL等都还没有成为C++的一部分。然而,随着时间的推移,在拥有了众多用C根本无法模拟或实现的特性之后,C++已经全然成为一门新的语言,C只成为了C++相当小的一个子集。)对于C++最重要的区别于其它编程语言的特性——模板,这些教材中最多是“言简意赅”地提到了一下;而C++最强大的武器——STL,这些教材中根本题都未提。也就是说,先不论这些教材的质量如何,它们中没有一本能做到全面、完整地介绍C++!面对这种情况,我的感受何止“可悲”二字。
说邮箱,给你发过去。
到豆单网去找,肯定能找到的,那里这种东西很多