2007年1月6日星期六

关于《The C++ Programming Language》


忽然想起从图书馆借的这本《The C++ Programming Language》明天就要到期了,本来还想续借,可是这会儿lib.xjtu偏偏登不上去,而且就算续借,也维持不到我下次回学校,那大约就是5月的事情了。

这是一本黄色封面的厚书,是Special Edition的阴影版,摩挲三月,在我手里起码旧了三成。也是我从图书馆中借过的技术类书籍中看的时间最长,读得最认真的一本。随便说几句心得在这里。

C++方面的图书相当多,主要有这门基本著名的《C++ Primer》,《Effctive C++》,《More Effctive C++》,《Thingking in C++》,和《The C++ Programming Langugae》。其中,Primer是比较基础的,我从同学那里大概翻过,感觉适合作为入门;TIC是我高中时候度过的,很多东西当时不理解,现在的印象也几乎没有了;据说efftive和more effticve主要关注于技巧,我没有读过,不好多说;而现在手边的这本C++ progamming language,是真正让我获益非常深的,它的入手点很基础,有很多东西又会觉得很深,很多平时完全没注意到的东西在这本书里都可以找到,很多平时用到却不明白的地方在这里也会发现究竟。

这本书主要分这么几个部分:
Introductory Material
Basic Facilities
Abstraction Mechanisms
The Standard Libary (STL)
Design Using C++
Appendices

我读得最认真的当属二、三部分,就是Basic Facilities和Abstraction Mechnisms。前者很翔实的讲述了C++这门语言提供给程序员的各种facilities,也就是各种编程手段。作为语言的创始人,从他的观点讲述了每种手段的作用,优点及部分的实现原理。后者从结构上入手,讲解如何利用C++来实现面向对象的、抽象的、结构化的设计。

受我们学院课程开设的影响,我使用JAVA的频率远高于C和C++,所以对C/C++就不是很熟练,在原理(或实现机制)上更是理解得很少。尤其是C++,很多细节上的东西不是很清楚,用起来含含糊糊的,总是莫名其妙的调试通过了就OK。而且因为使用的多是Visual C++,所以对标准C++得很多东西都没有接触到。在设计思想上,更是完全没有C++设计的概念,即便使用C++开发,也是java的思想。这样就根本无法发挥C++的优势,也完全不符合C++语言的规范。这本书的这两个部分,就正好帮我找到了这些问题,我也正在通过学习来解决。

习惯于java后再来深入学习C++是一件痛苦的事,当看到多重继承、虚继承时尤其有这样的感觉;同时这也是一件美妙的事,灵活的风格、多种多样的实现手段,是相对“安全”的java所不具备的,另外,对底层的探访也是一个很有意思的经历。

从网上看到,人们认为这本书比较适合作为提高的参考书籍,我觉得确实如此。初学者如果直接读者本书,可能会觉得艰深困难。毕竟有很多东西需要一定的开发经验作为积累,这样才能达到与作者的想法相契合的程度。另外,结合一定的编译原理基础会对理解这本书和理解C++起到非常大的作用。

明天,最迟后天,我大概就会把它还了。以后还是买一本吧。

没有评论: