《c++ 沉思录》集中反映了c++的关键思想和编程技术,不仅告诉你如何编程,还告诉你为什么要这样编程。本书曾出现在众多的c++专家推荐书目中。 这将是c++程序员的必读之作。因为: 它包含了丰富的c++思想和技术,从详细的代码实例总结出程序设计的原则和方法。 不仅教你如何遵循规则,还教你如何思考c++编程。 既包括面向对象编程也包括泛型编程。 探究stl这一近年来c++最重要的新成果的内在思想。 本书的作者在使用c++的时候,全世界的c++用户还寥寥无几。他们对c++语言的发展有着突出的贡献。
Andrew Koenig
AT&T大规模程序研发部(前贝尔实验室)成员。他从1986年开始从事C语言的研究,1977年加入贝尔实验室。他编写了一些早期的类库,并在1988年组织召开了第一个完全意义上的C++会议。在ISO/ANSI C++委员会成立的1989年,他就加入了该委员会,并一直担任项目编辑。他已经发表了C++方面的100多篇论文,在Addsion-Wesley出版了C Trap and Pitfalls,还应邀到世界各地演讲。
这是一本关于C++程序设计的书。说得具体些,它首先是一本关于程序设计的书,其次才是一本关于C++的书。从这个意义上讲,这本书与坊间大部分C++书籍都不一样,那些书所关注的是语言本身,而不是如何运用这种语言。
识字最多的人一定是最好的作家吗?能演奏最多音符的人一定是最好的音乐家吗?最勤于挥舞画笔的人一定是最好的画家吗?显然不是——这些观点极其荒谬。然而,我们却经常认为,那些了解最多语言特性的人就是最好的程序员。这一看法同样是荒谬的:编程工作中最困难的部分并不是去学习语言细节,而是理解问题的解决之道。
这本书对于语言本身并没有说太多。相反,我们谈了很多关于程序设计技术方面的话题。一个作家必须学习如何讲述故事,同样,一个程序员也必须学习如何分析问题。这本书中包含了大量的问题,以及针对这些问题的解决方案。认真地研习这些内容”,将会有助于你成为更出色的程序员。
这本书中所展示的解决方案有一个共同的思想,那就是抽象——集中注意力,只关注问题中那些在当前背景下最为重要的部分。可以说,如果不以某种方式进行抽象,你就不可能编写任何计算机程序,只此一点已经足以使“抽象”成为程序设计中最重要的单个思想。C++支持好几种不同的抽象形式,其中最著名的有抽象数据结构(Abstract Data Type,ADT)、面向对象程序设计和泛型程序设计。
我们出版这本书的时候,泛型程序设计还没有得到广泛的认知。短短几年后,STL(Standard Template Library,标准模板库)成为了C++标准库的一部分,这一思想也已经非常流行。所有这些使得本书中的思想随着时间的推移而越来越重要。
我们希望您能运用这些思想去理解一堆拼凑的代码与一个抽象之间的差别——这种差别,就好像一堆词藻与一篇文章,一堆音符与一支歌曲,一纸涂鸦与一幅图画之间的差别一样。
Andrew Koenig
Barbara Moo
2002年10月
于美国新泽西州吉列