C++语言的设计和演化
2002-1
机械工业出版社
[美] Bjarne Stroustrup
370
裘宗燕
无
本书是C++的设计者关于C++语言的最主要著作之一。作者综合性地论述了C++的历史和发展,C++中各种重要机制的本质意义和设计背景,这些机制的基本用途和使用方法,讨论了C++所适合的应用领域及其未来的发展前景。本书在帮助人们理解C++语言方面的作用是不可替代的。它值得每个学习、使用和关注C++语言的专业工作者、科研人员、教师和学生阅读。
出版者的话专家指导委员会译者序前言致读者引言怎样读这本书C++时间表关注使用和用户们程序设计语言第一部分 第1章 C++的史前时代 第2章 带类的C 第3章 C++的诞生 第4章 C++语言设计规则 第5章 1985——1993年表 第6章 标准化 第7章 关注和使用 第8章 库 第9章 展望第二部分 第10章 存储管理 第11章 重载 第12章 多重继承 第13章 类概论的精炼 第14章 强制 第15章 模板 第16章 异常处理 第17章 名字空间 第18章 C语言预处理器参考文献索引
无
这本书是C++之父的著作,不管什么理由都值得拥有
内容翻译的还行经典读物值得一看
了解c++怎么用,此书会告诉你更多为什么c++会这样,需要这样用
想学好C++的话,这本书还是一定要看滴
感觉还好,看看还是有必要的
直接给我发货了。这么做感觉很差。要是收我2块钱送货费,我就拒收了。
终于在深夜的时候看完,合上书本,就觉得被 C++ 之父 Bjarne Stroustrup 感动了。看吧,从 C++ 的诞生,其设计与演化的时间线(第 1 部分),经历的每一个重大改进(第 2 部分),都清清楚楚地展现了出来。难能可贵的是,在期间那些伟大的专家们的精妙思想,热烈的讨论都很清晰地还原了出来。当然,更多的是 BS 本人的许多想法。这些的想法的高明自不用说。从书中还可以看出 C++ 之父的细致严谨负责的做事态度。
不过也还觉得累。不管怎么说吧,自己写的 C++ 代码还没超过 1 W 行。对 C++ 的了解还流于表面。自然在看本书时,作者讨论分析哪些特性应该采取哪些应该摒弃,看着吃力。整个书本的语境,都不是面向程序员的,而是参与 C++ 的设计的那些专家们。如上文所说,书里展现的就是他们的思想。而程序员,只是“客户”。这样一来,看懂本书,对 C++ 了解并不是最重要的。需要了解一些一般性的程序设计语言的知识,比如计算机体系结构,编译系统等。
看本书的意义。直观来说,对编程没有太多帮助的。对于编程技术来说,语言只是其中一部分,而且在我看来并不是最重要的一部分。但是,对加深对 C++ 的理解很有帮助。想要使用 C++ 构建大的、同时高效的系统,对语言本身的深入理解是先决条件。另一方面,书中提到了很多语言设计的思想、哲学。这些,相信在学习其他编程语言的时候也是有帮助的。
日后一定还要再看一遍的。
2013-07-20-杰良
书是好书,但翻译得一般,很一般。举个例子,有木有人能告诉我书中第32页,”我们的目标是始终一贯的和明确的,那就是希望开发出使用C++的各个方面的局部性的专业经验“,这句话是什么意思?
另外,这本书是有索引的,但是有木有人能告诉我,为什么索引木有页码?木有页码的索引,是神马东西?索引木有页码,木有页码,木有页码。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
差点错过这本书。英文版借来很久一直没看,因为中文版出现才有幸阅读。对于语言的使用者来说,有这样一本书真是巨大的福利。作者详细讲述了语言诞生的背景,以及发展过程中遇到和解决的各种问题。C++的复杂语言特性一直让人诟病,我之前也对其抱怨甚多。通过本书,一是了解到了各种特性引入的目的,另外也更深入了解到了C和C++的关系。
作者早在初期就对C++(那时候还是C with Class)就有了明确的定位,比较重要的几点有:兼容C,支持面向对象,由实际问题驱动,必须现在就是有用的,是一种语言而非完整系统,不试图强迫人做什么,信任程序员。
由于兼容C,使得C++能够发展到如今的规模,也使得C++被C的缺点所困扰。比如C的弱类型,隐式转换,全局命名空间,编译预处理等。C++的复杂性有相当大的部分来自于此。
对于解决实际问题的关注,使得C++缺乏一些热门的学术特征。
总的来看,C++更趋向于一种从实际问题出发的语言,而非从学术出发的语言。后者通常能具有良好的形式化和优雅的语义。
但是对于“不试图强迫人做什么,信任程序员”这两条,我个人是不赞同的。本质上还是因为“人不如机器可靠”。人总会犯错,尤其面对复杂的问题。需要尽可能限制程序员。
可以看到,作者在静态类型检查上做了大量工作。从这一点,也可以深刻理解到编译预处理的问题,不检查函数参数类型的危害,强制转换的危害。
在对象对象上面,多重继承可能算是C++在解决该问题上的一个败笔。作者也提到了mixin,不知道为何没有采用。
模板、异常是作者非常重视的两个特性,而且很早就提出来了。这两个特性对语言的帮助非常大。名称空间也是一个具有重要现实意义的特性。
除了对语言特性的细致阐述,作者在方法论方面也给了大量的经验和总结。对于语言发展的非技术问题也有贯穿在全书中。
对我而言,C++有两本必读书。一本是C++程序设计语言,另一本就是本书。前者作为语言参考书,后者用于加深对语言的理解。
C++的历史很长了,长到能够写一本书了。这本书配合着《Masterminds of Programming》看效果会更好。
语言也不是一成不变的。不同的时代,即使在同一领域也总会出现不同的挑战。C的确是C++的包袱。看看现在的C++代码,再看看这本书里作为例子的C++代码,是不是又大不相同?94年的C++和现在的C++似乎也是不同的语言了。
这本书的另一个价值在于Stroustrup在书中说了许多设计哲学方面的东西。如果你只知道Stroustrup在设计C++的时候是一个工程师和程序员,那你肯定会错过很多东西。他的想法不仅仅来自于技术,也来自于历史和生活。
贝尔实验室是一个神奇的地方,而C++就是它创造的众多奇迹之一。C++的诞生显然经过了无数次的修改和反复,这种严谨的态度仍然是现代程序员需要学习和具备的。
很详细 几乎是 丙加加的生成史 所有权衡 所有妥协 他想到了所有我想到的 也想到所有我没想到的 回想过往无端的质疑 我无话可说 值得再看一遍 绝对精读
用手机发的 怎么总说短呢 还有什么好说呢 读过才会懂
C++适合构造程序中需求较稳定的部分,需求变化较大的部分可使用脚本语言;
程序须尽量发挥硬件的最高性能,且性能瓶颈在于CPU和内存;
程序须频繁地与操作系统或硬件沟通;
程序必须使用C++框架/库,如大部分游戏引擎(如Unreal/Source)及中间件(如Havok/FMOD),虽然有些C++库提供其他语言的绑定,但通常原生的API性能最好、最新;
项目中某个目标平台只提供C++编译器的支持。
很多地方翻译得很雷人,不过可以看得出裘老是看懂原文了,只是翻译技巧相对生涩一些,只要知道一些计算机特定术语的中英文区别,还是不影响阅读的。
C++的最大包袱是和C兼容的那一块,而这一块,同时也是它的最大优势。BS这么说的,很多人也都这么说的。
然而我觉得,以现在的观点看,C++的这个包袱,已经严重制约了它的发展。它使得C++无法摆脱预编译的这个累赘。
C++0X的表达能力和便利性最多不超过D语言,但是学习的复杂度、编译器的复杂度、编译速度的牺牲……
如果D语言有足够多的支持库,我想肯定会超过C++
C++ 是一门很难掌握的语言,C++ 的好书也很多。但是无论哪一本都不能取代这本的重要性。
因为,了解 C++ 的设计哲学,比了解 C++ 的语言特性更为重要。而阐述其设计哲学,没有比 C++ 的发明者更合适的人选了。
这本书翻译的很好,我指的很好是说翻译的人真正懂了 C++ , 并用心去翻译了。看翻译的书,咬文嚼字是没有意义的;所以一些语言措辞的方式和译词的选用合不合意都是次要的。
good comment.
裘老,翻译的是大作啊。。
如内联机制翻译为了在线机制,其他还有很多。
我的神啊,我就说照片上这人怎么这么面熟,猛的一看原来居然是云风...
看了你的“那些日子”中的引用,过来记录一下,有空一定买来看看。
前两个月刚刚读完这本书,受益匪浅。
最近在忙活 .NET 的项目,翻看《CLR via C#》,感觉,好像 C# 就犯了那种拼命增加特性的毛病,成为一堆特性集合的语言,像一盘散沙,而不是一个语言。这是作者一直竭力避免的,C++ 在这一点上做得很成功。
关注此书的人太少了
to fatalerror99:C#其实是一个平台。。。下面是.net。。
话说C++的特性也很多,恐怖的是陷阱也那么多。
有读过,没读完,现在想想还是读完它吧
03年的时候 读了几个章节,不评论
拿着云风的《游戏之旅——我的编程感悟》,看到第136页,顺手来搜一下作者提到的这本书,没想到竟然看到此贴!世界真是小啊~
看过一部分英文原版,期待这个版本的内容。
"本书翻译的很好,我指的很好是说翻译的人真正懂了 C++ , 并用心去翻译了。看翻译的书,咬文嚼字是没有意义的;所以一些语言措辞的方式和译词的选用合不合意都是次要的。“
很有道理~