Bjarne Stroustrup为C++初学者撰写的新作中译本《C++程序设计原理与实践》终于面世了。这本书秉承Bjarne一贯朴素、稳重的写作风格(偶尔不失犀利的幽默),其内容远比常见的轻量级C++入门教程丰富、系统,是一部专为有志于成为职业C++程序员的初学者而写的大部头。
《C++程序设计原理与实践》的基本素材来源于Bjarne(及其德州农工大学已逝同事Lawrence Peterson)针对大学生的授课讲义,内容包括基本知识、输入/输出、数据结构与算法、延伸阅读以及附录等5个部分,各章具体构成就不赘述了,在此仅强调一个细节:嵌入式系统程序设计一章中所述的编码规范不仅仅对嵌入式程序设计有效,大多数条款同样适用于其他领域的C++编程。初学者理应熟记这些条款,从一开始就养成良好的编程风格,良好的编程风格将使你受益无穷。
另外,该书配套网站很慷慨,免费提供了幻灯片、代码、习题答案及勘误等丰富的资源。
无论是从一名读者还是从一名译者的角度看,本书中文版的翻译都很好,但出版方删除附录的做法着实让人费解(虽然不怕麻烦的话可以到它们的网站下载电子版的附录)。印象中,这似乎是第一本被大幅删除原著内容的C++引进图书,而且这样的事偏偏还发生在了C++语言创建者的著作之上。虽然出版方这么做有它自己的理由,但无论是什么理由都让人难以原谅。这本书的写作方式(即实例驱动而非语言驱动)和定位决定了附录内容对于初学者而言是不可或缺的,理应唾手可得。
这本书难免被和Stanley Lippman的《C++ Primer》对比,不仅仅是因为它们的厚度和定位,也因为两位作者的背景和影响力。其实两本书的风格差异非常明显。《C++ Primer》是“语言特性驱动”写作方式的成功代表(其销量和口碑就是最好的证据),而本书则是实例(往往可以看成实用程序代码的简化版)、技术和思想并重。就像Bjarne的其他著作一样,其内容一向不仅仅局限于C++,书中遍布程序设计思想和方法的经验谈。
这些正是真正的专家有别于普通作者之处。真正的专家见多识广,精通业务,实践经验丰富,对问题的认知独到、深刻,能够用最简单的语言将常人难以言明的问题表达清楚。阅读Bjarne的任何一本书你都会深刻地感受到这一点。
该书会被中国的大学选为C++教材吗?可能性不大。首先它太厚了,内容太多了(虽然出版社删除了附录部分),不适合一学期学时安排。其次,与普通大学教材相比,它的价格太高了。仅此两点就足以被大学教务部门否决。退一步而言,即便教务部门不干预,很多教师恐怕也无选用它的动力,某些内容对于学生来说确实太难了,甚至对于一些编程经验欠缺的教师自身而言也不容易,何况不少教师已经习惯于讲授“古典C++”而非现代C++,作出改变需要付出大量的额外努力,哪来的动力呢?
劣质的教材、糟糕的教学、浮躁的环境已经耽误了不在少数的初学者(他们中的一部分已经成为老资格程序员),所幸的是,至少在可以预见的未来二十年,C++的应用领域不会消亡,C++的发展不会止步,一拨老C++程序员退役了,一批又一批朝气蓬勃的新人踌躇满志地加入职业C++程序员的行列。即便这本书无法勾起既有C++程序员的阅读兴趣,对于C++新人而言,聆听C++语言创建者的教诲,无疑可以少走不少弯路。实际上,对于那些基本功不够扎实的老手而言,这也是一次接受C++再教育的良机。是的,不同层面的C++程序员都可以从阅读本书中受益,对此我深信不疑。
《C++程序设计原理与实践》,[美]Bjarne Stroustrup著,王刚译,机械工业出版社2010年7月,108.00元