- 定价:¥48.00
- 评分:
(已有227条评价)
基本信息
- 原书名:The Design and Evolution of C++
- 原出版社: Addison-Wesley

编辑推荐
在本书中,作者还从实践的角度出发,讨论了许多与程序设计语言、系统程序设计、面向对象的技术和方法、软件系统的设计和实现技术等有关的问题,值得每一个关心这些领域及相关问题的计算机工作者和学生们阅读参考。
内容简介
计算机书籍
本书是C++的设计者关于C++语言的最主要著作之一。作者综合性地论述了C++的历史和发展,C++中各种重要机制的本质意义和设计背景,这些机制的基本用途和使用方法,讨论了C++所适合的应用领域及其未来的发展前景。本书在帮助人们理解C++语言方面的作用是不可替代的。它值得每个学习、使用和关注C++语言的专业工作者、科研人员、教师和学生阅读。
在本书中,作者还从实践的角度出发,讨论了许多与程序设计语言、系统程序设计、面向对象的技术和方法、软件系统的设计和实现技术等有关的问题,值得每一个关心这些领域及相关问题的计算机工作者和学生们阅读参考。
<center>
<b><a href=/computers/ebook/5217/kwb.htm target=_blank><font size="5">勘 误 表</font></a></b>
</center>
目录
出版者的话
专家指导委员会
译者序
前言
致读者
引言
怎样读这本书
C++ 时间表
关注使用和用户们
程序设计语言
第 一 部 分
第1章 C++的史前时代 2
1.1 Simula和分布式系统 2
1.2 C与系统程序设计 4
1.3 一般性的背景 4
第2章 带类的C 7
2.1 带类的C的诞生 7
2.2 特征概览 8
2.3 类 9
译者序
这是一本独特的书,是由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++作为CSl(计算机科学的第一门课程)的工作语言的可行性,国内学习和使用C++的人也越来越多。在这种情况下,由C++语言设计师Bjarne Stroustup本人撰写的有关C++的两部重要著作,本书和《C++程序设计语言》,即将在中国出版,这当然是非常有意义的事情。为此我非常感谢机械工业出版社的管理和编辑人员(相信许多计算机工作者也会如此),感谢他们在国内出版界更多关注时髦计算机图书的浪潮中,愿意付诸努力,出版一些深刻的、影响长远的重要著作。我祝愿这种工作能获得丰厚的回报,对于整个社会,也包括出版社自身。
作为译者,我希望作为自己工作结果的这个中译本能给学习C++语言、用这个语言从事教学、从事程序设计工作和复杂系统程序设计的人们提供一点帮助,使这本有关C++语言的最重要著作中阐述的事实和思想能够被更多人所了解。虽然我始终将这些铭记在心,但译文中仍难免出现差错和疏漏,在此也恳请有见识的读者不吝赐教。
裘宗燕
2001年6月于北大
裘宗燕 北京大学数学学院信息科学系教授。关心的主要学术领域包括计算机软件理论、程序设计方法学、程序设计语言和符号计算。已出版多部著作和译著,包括《程序设计语言基础》(译著,1990),《Mathematica数学软件系统的应用与程序设计》(1994),《从问题到程序—程序设计与C语言引论》(1999),《程序设计实践》(译著,2000)等。
e-mail:qzy@math.pku.edu.cn
前言
一个人,如果不耕作,
就必须写作。
—Martin A. Hansen
ACM关于程序设计语言历史的HOLP-2会议要我写一篇关于C++历史的文章。这看起来是一个很合理的想法,还带着点荣誉性质,于是我就开始写了。为了对C++的成长有一个更全面更公平的观点,我向一些朋友咨询了他们对C++那些早期日子的记忆。这就使关于这项工作的小道消息不胫而走。有关的故事逐渐变了味,有一天,我忽然接到一个朋友的来函,问我在哪里可以买到我关于C++设计的新书。这个电子邮件就是本书的真正起源。
在传统上,关于程序设计和程序设计语言的书都是在解释某种语言究竟是什么,还有就是如何去使用它。但无论如何,有许多人也很想知道某个语言为什么会有它现在这个样子,以及它是怎样成为这个样子的。本书就是针对C++语言,想给出对后面这两个问题的解释。在这里要解释C++怎样从它的初始设计演化到今天的这个语言,要描述造就了C++的各种关键性的问题、设计目标、语言思想和各种约束条件,以及这些东西又是如何随着时间的推移而变化的。
自然,C++语言和造就它的设计思想、编程思想本身并不会演化,真正演化的是C++用户们对于实际问题的理解,以及他们对于为了帮助解决这些问题而需要的工具的理解。因此,在本书中也将追溯人们用C++去处理的各种关键性问题,以及实际处理那些问题的人们的认识,这些都对C++产生了重要影响。
C++仍然是一个年轻的语言,许多用户对这里将要讨论的一些问题还不知晓。这里所描述的各种决策的进一步推论,可能还需要一些年才能变得更清晰起来。本书要展示的是我个人关于C++如何出现、它是什么以及它应该是什么的观点。我希望这些东西能够帮助人们理解怎样才能最好地使用C++,理解C++的正在继续进行的演化进程。
书中特别要强调的是整体的设计目标、实际的约束以及造就出C++的那些人们。有关各种语言特征的关键性设计决策的讨论被放到了相应的历史环境里。在这里追溯了C++的演化过程,从带类的C开始,经过Release 1.0和2.0,直到当前ANSI/ISO的标准化工作,讨论了使用、关注、商业行为、编译系统、工具、环境和库的爆炸性增长,还讨论了C++与C和Simula关系的许多细节。对于C++与其他语言的关系只做了简短讨论。对主要语言功能的设计,例如类、继承、抽象类、重载、存储管理、模板、异常处理、运行时类型信息和名字空间等,都在一定细节程度上进行了讨论。
本书的根本目的,就是想帮助C++程序员更好地认识他们的语言、该语言的背景和基本概念;希望能激励他们去试验那些对他们来说还是新的C++使用方式。本书也可供有经验的程序员和程序设计语言的学生阅读,可能帮助他们确定使用C++是不是一件值得做的事情。
致谢
我非常感谢Steve Clamage,Tony Hansen,Lorraine Juhl,Peter Juhl,Brian Kernighan,Lee Knight,Doug Lea,Doug McIlroy,Barbara Moo,Jens Palsberg,Steve Rumsby和Christopher Skelly。感谢他们完整地阅读了本书的手稿,他们建设性的指教使本书的内容和组织都发生了重要变化。Steve Buroff,Martin Carroll,Sean Corfield,Tom Hagelskjoer,Rick Hollinbeck,Dennis Mancl和Stan Lippmann通过对一些章节的评论提供了帮助。还要感谢Archie Lachner在我还没有想到这本书之前就提出了对本书的要求。
自然,我还应该感谢那些帮助创造出C++语言的人们。从某种意义上说,本书就是献给他们的礼物,他们中一部分人的名字可以在各个章节和索引中找到。如果要我点出一些个人来,那就必然是Brian Kernighan,Andrew Koenig,Doug McIlroy和Jonathan Shopiro。他们中的每一位在过去十多年期间一直支持和鼓励我,也是提供各种想法的源泉。还有,感谢Kristen Nygaard和Dennis Ritchie作为Simula和C的设计师,C++从它们那里借用了一些关键性的成分。经过这些年,我已经逐渐了解到他们不仅是才华横溢的讲究实际的语言设计师,而且也是真正的绅士和绝对亲切的个人。
Bjarne Stroustrup
Murray Hill, New York