C++语言的设计和演化

[美] Bjarne Stroustrup

出版时间

2020-09-19

ISBN

9787115497116

评分

★★★★★

标签

编程

书籍介绍
这不是一本教你怎么写C++的代码手册,而是一位语言创造者对自己三十年设计抉择的坦诚自白。作者把C++的每一次取舍,都放回他个人的哲学立场里解释:他偏爱亚里士多德而非柏拉图,厌恶强迫人们按某种方式行事,甚至'派生''基'这样的命名都源于他本人记不住谁是谁的窘况。读者最被打动的,正是这种'为解决问题而非证明观点'的实用主义——语言里那些如今看来繁琐甚至可笑的设计,背后都是对程序员选择权的尊重。它适合那些想知道'为什么C++是这样'的人:想理解兼容与效率之间的妥协,想看清一个语言如何在标准化浪潮中艰难演化。唯一需要提醒的是:内容偏早期,翻译也常被诟病,读懂它需要一点耐心。
作者简介
Bjarne Stroustrup 被誉为“C++之父”,1950年出生于丹麦,先后毕业于丹麦奥胡斯大学和英国剑桥大学,曾担任AT&T大规模程序设计研究部门负责人,AT&T、贝尔实验室和ACM成员,德州农工大学计算机系首席教授,德州农工大学“杰出教授”。现任摩根士丹利信息技术部门董事总经理、哥伦比亚大学计算机科学系客座教授,美国国家工程学会会员,IEEE、ACM、CHM资深会员。
AI导读
核心看点
  • C++之父亲述语言设计哲学与历史
  • 深入解析核心机制的设计背景与取舍
  • 探讨实用主义在编程语言设计中的应用
读者共识
  • 理解设计哲学比掌握语法特性更为重要
  • 翻译质量参差不齐,部分读者反映阅读痛苦
  • 虽内容略显陈旧,但仍是不可替代的经典之作
精彩摘录
  • "我的长期(持续了至少24年)爱好是历史。在大学里和毕业以后我还花了许多时间研究哲学。对于究竟应该把自己理性的怜悯放在哪里,以及为什么,这些学习给了我一种非常自觉的观念,经过这样长时期的思考训练,较之理想主义者而言,我觉得自己更喜欢实用主义者,而对神秘主义我更是无法赞成。因此,我喜欢亚里士多德胜过柏拉图,喜欢休姆胜过笛卡尔,对帕斯卡我只能表示失望。我发现像柏拉图或者康德的那种宽泛完整的“系统”是非常奇妙的,但却对它们完全不能感到满意,因为它们看起来是非常危险的——远离了我们的日常经验和个人的基本特性。 我发现了克尔凯戈尔对个人的几乎狂热的关心以及敏锐的心理洞察力,这笔黑格尔和马克思的抽象的宏伟蓝"
  • "我设计C++是为了解决一个问题,而不是想证明一种观点"
  • "在历史上,一些最坏的灾难就起因于理想主义者们试图强迫人们“做某些对他们最好的事情”。"
  • "经过了几年的讨论,给我留下最深刻印象的是,一个人可以站在任何位置,编织出一套能使人信服的逻辑论据。在论述异常处理的开创性论文中就这样做的。我们现在是站在古希腊哲学家的位置,在争论着宇宙的本质方面,如此的激烈而敏锐,以至于根本就忘记去研究它了。"
  • "对文学的热爱更增强了我的认识:仅仅依据理论和逻辑做决策是没有希望的。.... 经常遇到这种情况,如果我试图取缔一个我个人不喜欢的语言特性时,我总抑制住自己这样做的欲望,因为我不认为自己有权把个人的观点强加给别人。我知道通过强力地推行逻辑,毫无同情心地谴责“思想中坏的、过时的、混乱的习惯”,可能在相对短的时间内能有更多的建树。但是,人的代价总是最高的。"
  • "选用派生(derived)和基(base)作为名字,是因为我老记不住到底哪个是子(sub)哪个是超(super),而且我也不是惟一有这种特别问题的人。我也注意到,许多人认为子类比它的超类信息更多是与直觉相矛盾的。"
  • "One conclusion I drew from the wildly divergent comments on the HOPL-2 paper - and from many other sources - is that there is no agreement on what a programming language really is and what its main purpose is supposed to be. Is a programming language a tool for instructing machines? A means of commu"
  • "This implies that language design parts ways from the "purer'' and more abstract disciplines such as mathematics and philosophy. To serve its users, a general-purpose programming language must be eclectic and take many practical and sociological factors into account. In particular, every language is"
目录
扉页
版权
内容提要
译者序
译者简介

显示全部
用户评论
从某种意义上讲这本书才是我真正的C++入门书之一(不过也得益于极客时间的相关网课),之前零散的概念总算能以一种理解形式串联起来了。它并不单独讲语法和概念,也花了不少篇幅讲不同语法概念的层次和关联。 P.S. 这本书某种程度上可以划在“哲学”的分类当中233 看完“一般性的背景”这节竟然有点想哭,虽然我一向对“理性”这个词没有好感,然而这种克尔凯郭尔式的“理性的同情”却是我能感受到共鸣的。
为什么打5星? 只是因为不能打6星而已。。
看的是 Cpp-Club 的翻译版,工作上用的是 C++17. C++ 提供了太强的能力和太多的遍历,委员会也在 C++11/20 一步一步做出了伟大的变更。有的地方(比如列表初始化)看完让人苦笑。但尽管 C++98 或者 C-Style 的写法可能应该被丢进垃圾箱,但是异常、模板、type deduce 也成为使用者不可避免的问题。用户不得不成为一个这些方面的专家,才能写出不错的代码。哎希望 2020 年的 C++ 早点普及吧,坐等 concept/任务库/modules. (哎,有的时候我觉得我只要 flexible 和 RAII)...
C++早期演化之路,算是对前期发展历程的一个详细了解吧!
下载
收藏