读书笔记: C++语言的设计与演化

https://book.douban.com/people/fleure/annotation/10536031/

一般性的背景

<原文开始>我的希望是慢慢地——经常是令人痛苦的慢——推动人们去试验一些新技术,去接受那些适合他们需要或者口味的东西。确实存在着更有效的技术去达到“宗教信仰转变”或者“革命”,但是我极端讨厌这类技术,从根本上怀疑它们在长时间和大范围上的作用。经常看到的情况是,如果一个人可以很容易地转变到“信仰X”,那么进一步地转变到“信仰Y”也是很可能的。这样的收获是短暂的。我喜欢怀疑论者而不是“真诚的信徒”。我把一点点实在的证据看得比许多理论更有价值,把实际经验的结果看得比许多逻辑论述更为重要。 然而,这些观点也很容易导致宿命而接受现状。此外,一个人如果不打破几个鸡蛋是做不出鸡蛋饼的,而且大部分人实际上确实不希望变化——至少“不是现在”,不是以某种可能搅乱了它们日常的生活的方式。这就是需要尊重事实且需要一点理想主义出现的地方。在程序设计领域内,一般地说,世界上事情并不总是处在很好的状态,要改进它们,有许多事情是可以做的。我设计 C++ 只是为了解决一个问题,而不是想证明一种观点,而它的成长又能够服务于它的使用者。这里的基本观点是,完全可能通过逐步改变去达成一种进步。最理想的情景是保持最大的变化速率,而这种变化又确实增加了它所涉及的那些人的福祉。最主要的困难在于确定是什么构成了真正的进步,开发出一些技术以实现平滑的转变,还要避免由于过度狂热而导致的暴行。</原文结束> ## 一般性的背景 <原文开始>对文学的热爱更增强了我的认识:仅仅依据理论和逻辑做决策是没有希望的。.... 经常遇到这种情况,如果我试图取缔一个我个人不喜欢的语言特性时,我总抑制住自己这样做的欲望,因为我不认为自己有权把个人的观点强加给别人。我知道通过强力地推行逻辑,毫无同情心地谴责“思想中坏的、过时的、混乱的习惯”,可能在相对短的时间内能有更多的建树。但是,人的代价总是最高的。</原文结束> ## 7.4.3 期望与看法 <原文开始>人们经常对 AT&T 容许其他人实现 C++ 的行为表示诧异,这实际上说明了他们很不了解法律及 AT&T 的目标。一旦出版了 C++ 的参考手册,就再没办法去组织任何人写出一个实现了。进一步说,AT&T 不止是允许其他人加入 C++ 的实现、工具和教育等这样蓬勃发展的大市场,它还欢迎和鼓励他们这样做。大部分人都忽略了这样一个事实,那就是 AT&T 作为程序设计产品的消费者远远大于它作为一个生产者。因此,AT&T 从 C++ 领域的竞争者那里获益匪浅。</原文结束> ## 第三章 C++ 的诞生 <原文开始>我过去和现在的印象都说明,许多程序设计语言和工具都是在提供了解答之后再去寻找问题,而我则确定自己的工作绝不能混同于这一类东西。</原文结束> <原文开始>良好设计的关键是对问题的深入认识,而不是提供了多少最高级的特征。</原文结束> <原文开始>写它(《C++程序设计语言》 )的时候我带着强烈的决心,不准备去鼓吹任何特殊的程序设计技术。基于同样的想法,我也害怕由于忽视和家长式作风的误导而给语言构筑一些限制。我不希望这本书变成一篇有关自己个人爱好的宣言。</原文结束> ## 1985-1993 年表 <原文开始>标准化绝对不是一件容易的事情。在这个委员会里有各种各样的人,有的人来到这里就是为了维持现状;有的人带着一个有关现状的想法,希望能够把时间拨回到几年之前;有的人希望能与过去做彻底的决裂,设计出一个全新的语言;有的人只关心某一个问题;有的人只关心某一类系统;有的人在投票时完全看他们雇主的脸色行事;有的人只代表他们自己;有的人带着有关程序设计和程序设计语言的理论观点;也有的人希望的事今天就有一个标准,即使这意味着遗留下许多没有结论的问题;有的人则除了一个完美的定义之外什么也不能接受;有的人还认为 C++ 完全是一个新语言,几乎没有什么用户;有的人则代表着再过去 10 年里写出了成百万行代码的用户;如此等等。</原文结束> <原文开始>在标准化的规则下,我们都必须或多或少表示同意,必须达成“一致”(通常定义为一个很大的多数)。存在一些合理的规则——即使不太合理,它们也是委员会必须遵守的国家或者国际的规则。所有的利益都是合法的,让一个多数压服一个很大的少数的利益,最终将会产生一个标准,它只对某个过分狭隘的用户社团有用。这样,委员会的每个成员都要学会尊重那些看起来是异己的观点,学会妥协。这些倒很符合 C++ 的精神。</原文结束> ## 第十六章 异常处理 <原文开始>为了做出可靠的系统,你需要尽快地把非同步事件映射到某种形式的进城模型中。</原文结束> <原文开始>低级中断系统应该尽可能与普通程序分离。</原文结束> 想起来 linux 的 signalfd() 系统调用蛮讨喜的。 ## 第十六章 异常处理 <原文开始>经过了几年的讨论,给我留下最深刻印象的是,一个人可以站在任何位置,编织出一套能使人信服的逻辑论据。在论述异常处理的开创性论文中就这样做的。我们现在是站在古希腊哲学家的位置,在争论着宇宙的本质方面,如此的激烈而敏锐,以至于根本就忘记去研究它了。</原文结束> ## 类概念的精炼 <原文开始>看起来对每个可能的语言及其每种使用都存在“很好的证据”,我们还需要数据。如果没有数据和适当的评估试验,我们就会像那些希腊哲学家,他们确信宇宙中的所有东西都是由某几种物质组成的,他们天才地辩论了几个世纪,然而还是无法确定究竟是哪四种(或者是五种)基本物质。</原文结束>