《C++语言的设计与演化》译者序

这是一本独特的书,是由C++ 语言的设计师本人写的,描述C++语言的发展历史、设计理念及技术细节的著作。在计算机发展的历史上,这种从多方面多角度描述一种主流语言各个方面的综合性著作,至今我还只看到这一本。阅读本书,不仅可以了解有关C++ 语言的许多重要技术问题和细节,还可以进一步理解各种C++ 特征的设计出发点,设计过程中所考虑的方方面面问题,以及语言成形过程中的各种权衡和选择。每个学习和使用C++语言的人,一定能由此加深对自己所用工具的认识,进一步理解应该如何用好这个语言,此外还能看到作者对于复杂的系统程序设计的许多观点和想法。如果一个人想深入了解C++语言,想使C++成为自己得心应手的工具,想在复杂的系统程序设计领域中做出一些有价值的工作,想了解面向对象程序设计语言的一般性问题,想了解程序设计语言的发展现状、问题和前景,本书都是最值得阅读的书籍之一。

C++语言的设计目标是提供一种新的系统开发工具,希望能在一些方面比当时的各种工具语言有实质性的进步。今天看,C++最重要的作用就是使那时的阳春白雪(数据抽象、面向对象的理论和技术等)变成了普通的系统开发人员可以触及、可以接受使用、可以从中获益的东西。这件事在计算科学技术发展的历史记录上必定会留下明显的痕迹。本书从一个最直接参予者的角度,记述了C++语言的起源和发展,记录了它怎样成长为今天的这个语言,怎样使语言研究的成果变成了程序员手中的现实武器。

从来都没有一种完美的程序设计语言。C++语言由于其出身(出自C语言),由于其发展过程中各种历史和现实因素的影响,也带着许多瑕疵和不和谐,尤其是在作为C++ 基础的C语言的低级成分与面向数据抽象的高级机制之间。对于一个目标是支持范围广泛的复杂系统实现的语言来说,这类问题也很难避免。为了系统的效率和资源的有效利用,人们希望有更直接的控制手段(低级机制);而为了将复杂的功能组织成人易于理解和把握的系统,又需要有高级的机制和结构。在使用一个同时提供了这两方面机制的语言时,应该如何合理而有效地利用它们,使之能互为补充而不是互相冲突,本书中许多地方讨论到这些问题,也提出了许多建议。这些,对于正确合理地使用C++语言都是极其重要的。

C++并不是每个人都喜欢的语言(没有任何语言可能做到这一点),但不抱畸见的人都会承认,C++语言取得了极大的成功。C++语言的工作开始于一个人(本书作者)的某种很合理、很直观的简单想法(为复杂的系统程序设计提供一种更好的工具),由于一个人始终不渝的努力,一小批人的积极参予,在一大批人(遍及世界的系统开发人员)的热心关注、评论和监督下,最终造就出了一项重要的工作。这个工作过程本身就非常耐人寻味,它也是在现代信息环境(主要是互联网络)下,开展全球范围的科学技术研究的一个最早的演练。在这个成功中,商业的考虑、宣传和炒作从来没有起过任何实质性的作用,起作用的仍然是理性的思维、严肃的科学态度、无休止的踏踏实实的实际工作。这些,与今天在信息科学技术领域中常见的浮躁情绪和过分的利益追求形成了鲜明对比。许多事实给了我们一种警示:时尚转眼就可能变成无人理睬的烂泥,仅仅被眼球注意的东西很快就会被忽视,炒作最凶的东西往往也消失得最快,而真正有价值的成果则往往起源于人们最基本的需求和向往。

作为C++语言的创造者,作者对于自己的作品自然是珍爱有加。对某些针对C++语言的批评,本书中也有一些针锋相对的比较尖锐的观点。但通观全书,作者的论点和意见还是比较客观的,并没有什么过于情绪化的东西。在前瞻性讨论中,作者提出了许多预见。经过这五六年时间,其中一些已经变成了现实,也有些,例如特别有效的开发环境,还在发展之中。这些可能也说明了语言本身的一些性质:C++是个比较复杂的语言,做好支持它的工具绝不是一件容易的事情,在这些方面还有许多发展余地。

作者在讨论C++的设计和发展的过程中,还提出了许多人文科学领域的问题,提出了他在从事科学技术工作中的人文思考,其认识和观点也是C++ 成长为今天这样一个语言的基础。作者的这些想法也可以供我们参考。

今天,作为一种通用的系统程序设计语言,C++已经得到了广泛的认可。许多个人和企业将C++作为软件系统的开发工具,许多计算机专业课程用它作为工具语言。近十年来,国外的一些计算机教育工作者也一直在探索将C++作为CS1(计算机科学的第一门课程)的工作语言的可行性,国内学习和使用C++的人也越来越多。在这种情况下,由C++语言设计师Bjarne Stroustup本人撰写的有关C++的两部重要著作,本书和《C++程序设计语言》,即将在中国出版,这当然是非常有意义的事情。为此我非常感谢机械工业出版社的管理和编辑人员(相信许多计算机工作者也会如此),感谢他们在国内出版界更多关注时髦计算机图书的浪潮中,愿意付诸努力,出版一些深刻的、影响长远的重要著作。我祝愿这种工作能获得丰厚的回报,对于整个社会,也包括出版社自身。

作为译者,我希望作为自己工作结果的这个中译本能给学习C++语言、用这个语言从事教学、从事程序设计工作和复杂系统程序设计的人们提供一点帮助,使这本有关C++语言的最重要著作中阐述的事实和思想能够被更多人所了解。虽然我始终将这些铭记在心,但译文中仍难免出现差错和疏漏,在此也恳请有见识的读者不吝赐教。

裘宗燕 20016月于北大
北京大学数学学院信息科学系

EMAILqzy@math.pku.edu.cn