一本好书,从序就开始--《C++沉思录》
RenderMonkey的计划到了第二天就被一场病给打断,似乎人生已经遇到了一个瓶颈,工作太过疲惫,放纵的心理越来越强烈,下班后只知玩游戏取乐,迷茫。。。光棍节给自己买了一堆的书,希望自己能够醒过来,努力、努力再努力!
--《C++沉思录》序
这是一本关于C++程序设计的书。说得具体些,它首先是一本关于程序设计的书,其次才是一本关于C++的书。从这个意义上讲,这本书与坊间大部分C++书籍都不一样,那些书所关注的是语言本身,而不是如何运用这种语言。
识字最多的人一定是最好的作家吗?能演奏最多音符的人一定是最好的音乐家吗?最勤于挥舞画笔的人一定是最好的画家吗?显然不是——这些观点极其荒谬。然而,我们却经常认为,那些了解最多语言特性的人就是最好的程序员。这一看法同样是荒谬的:编程工作中最困难的部分并不是去学习语言细节,而是理解问题的解决之道。
这本书对于语言本身并没有说太多。相反,我们谈了很多关于程序设计技术方面的话题。一个作家必须学习如何讲述故事,同样,一个程序员也必须学习如何分析问题。这本书中包含了大量的问题,以及针对这些问题的解决方案。认真地研习这些内容*,将会有助于你成为更出色的程序员。
这本书中所展示的解决方案有一个共同的思想,那就是抽象——集中注意力,只关注问题中那些在当前背景下最为重要的部分。可以说,如果不以某种方式进行抽象,你就不可能编写任何计算机程序,只此一点已经足以使“抽象”成为程序设计中最重要的单个思想。C++支持好几种不同的抽象形式,其中最著名的有抽象数据类型(Abstract Data Type,ADT)、面向对象程序设计和泛型程序设计。
我们出版这本书的时候,泛型程序设计还没有得到广泛的认知。短短几年后,STL(Standard Template Library,标准模板库)成为了C++标准库的一部分,这一思想也已经非常流行。所有这些使得本书中的思想随着时间的推移而越来越重要。
我们希望您能运用这些思想去理解一堆拼凑的代码与一个抽象之间的差别——这种差别,就好像一堆辞藻与一篇文章、一堆音符与一支歌曲、一纸涂鸦与一幅图画之间的差别一样。
Andrew Koenig
Barbara Moo
2002年10月
于美国新泽西州吉列