具体描述
"本书从C++的发展历史、类型系统、语义以及性能的视角,给读者展现了C++语言的基本理念和发展主线。一方面用抽象的理论框架,比如集合论、有限自动机、类型和类型系统等诠释了C++的理论方面;另一方面又从语义着手,从底层操作剖析了C++的实现方法。使读者既能站得高、看得远,又能把握C++的实质,从而全面掌握C++语言。
本书作者有20多年的C++开发经验,在微软总部工作期间,用C++参与开发过包括Windows XP系统在内的许多知名商用软件系统,在C++语言上有着深厚的功底。在本书作者看来,理解C++的精髓和灵魂,必须从C++类型系统着手,这样才能写出性能优异而又易于维护的系统。另外,从C++11到C++17的最新构造,都没有脱离C++类型系统的主体思想。熟读本书可以作为学习C++17的前奏。"
作者简介
杨镰,1985年毕业于华中工学院计算机系。1988年赴美留学,获波特兰州立大学计算机科学硕士学位。1995年加盟微软总部,在微软研究院从事软件安全和性能研发方面的工作。在微软工作的15年里,他先后参加了Windows Vista、Windows Server 2008、 MSN以及Bing的研发,在软件工程、软件性能优化、软件安全等领域有很深厚的功底和实践。他在不同的国际会议上发表了多篇论文,内容涉及软件工程、机器学习和高级语言。在繁忙的工作之余,他是滑雪高手,对如何提高滑雪板的性能也颇有研究。
目录信息
第1章 C++简史 1
1.1 C++ 的历史背景 1
1.2 C++大事记 5
1.2.1 1979年:C with classes诞生 5
1.2.2 1983年8月:C++正式命名 6
1.2.3 1986年:《The C++ Programming Language》出版 7
1.2.4 1987年:C++2.0发布 7
1.2.5 1990年:《The Annotated C++ Reference Manual》出版 8
1.2.6 1994年:STL诞生 8
1.2.7 1998年:ISO C++ 正式通过 9
1.2.8 2011年:C++11颁布 9
1.3 C++的进化和改进理念 10
1.4 C++的历史贡献及未来 11
第2章 程序设计语言的语义 14
2.1 哲学基础 14
2.2 语义的形式化描述 14
2.3 操作性语义 16
2.4 语义描述涉及的主要元素 17
第3章 C++类型系统 19
3.1 类型系统简介 19
3.2 数据类型的表达规则 21
3.2.1 基本数据类型的表达规则 22
3.2.2 用户自定义类型的表达规则 23
3.3 类型实例的构造规则 25
3.3.1 类型和类型实例 25
3.3.2 类型实例的构造和析构 27
3.4 类型的操作规则 33
3.4.1 context 33
3.4.2 函数 34
3.4.3 过程 35
3.4.4 过程函数 35
3.4.5 方法 36
3.4.6 特别讨论:过程方法的自动机诠释 37
3.4.7 运算符 38
3.5 C++类型系统的特征 39
3.5.1 特征 1:支持OOP 39
3.5.2 特征2:强静态类型 40
3.5.3 特征3:UDT是一等公民 41
3.5.4 特征4:类型清除 45
3.5.5 特征5:支持模板 49
3.5.6 特征6:指针和REF 53
3.5.7 特征7:类型修正符 60
3.6 其他(非C++)类型系统 62
3.7 类型系统的意义和用途 62
3.7.1 程序的精确性保障 62
3.7.2 性能的可保障性 64
第4章 C++变量语义 66
4.1 变量简介 66
4.2 C++变量的属性 68
4.2.1 C++变量的存储属性 68
4.2.2 C++ 变量的值语义 95
4.2.3 C++变量的自洽性 106
4.2.4 C++变量的总分性 109
4.2.5 C++变量的多态性 112
4.3 临时变量 113
第5章 C++对OOP的支持 116
5.1 object的内存布局 117
5.2 继承 119
5.2.1 继承object的内存布局 123
5.2.2 多继承 128
5.2.3 继承类object的语义规则 130
5.3 多态类和多态变量 137
5.4 C++对抽象的支持 139
第6章 C++ 性能分析 141
6.1 性能分析原理 141
6.2 算法的重要性 149
6.3 RAM内存读取的性能 153
6.3.1 单线程heap管理器 154
6.3.2 定制化heap管理系统 157
6.4 关于缓存 164
6.5 关于I/O 175
6.6 C++的特殊性能问题 176
6.6.1 临时变量的性能问题 176
6.6.2 STL 容器 180
6.6.3 Type Erasure 185
6.6.4 异常处理 187
6.6.5 继承的性能问题 194
6.6.6 直接函数、间接函数、内联函数 200
参考文献 204
"
· · · · · · (收起)
读后感
存粹探讨个技术问题,书本 6.6.2 STL容器,184页下方最后一段,“前者不具备值语义,必须通过函数Init来复制程序,花销颇大,后者具备值语义,可以通过位拷贝来复制程序,简单高效”。这句话是不是写错了,是不是反了? 还得凑够140个字,真是醉了,看看这段写完够140个字了吗...
趁这段空闲时间,把《C++语义和性能分析》看了两遍,感觉受益良多。 此书虽篇幅不长,仅仅2百页多,但以较高的技术角度讲述了C++语言的发展历程,类型系统,语言语义对于面向对象的支持,性能考虑等内容,有深度,有思想,所举的例子简单明白,让人能够理解关键点。作者不愧是...
存粹探讨个技术问题,书本 6.6.2 STL容器,184页下方最后一段,“前者不具备值语义,必须通过函数Init来复制程序,花销颇大,后者具备值语义,可以通过位拷贝来复制程序,简单高效”。这句话是不是写错了,是不是反了? 还得凑够140个字,真是醉了,看看这段写完够140个字了吗...
用户评价
这本书的语言风格着实令人耳目一新。它既保持了技术文献应有的精确性,又避免了那种干巴巴的、令人昏昏欲睡的学术腔调。作者在关键的理论阐述部分,运用了恰当的比喻和生动的类比,使得原本高深的议题变得触手可及。有时候,我甚至觉得像是在听一位经验极其丰富的导师娓娓道来,而不是在啃一本技术手册。这种亦师亦友的叙事口吻,极大地降低了阅读的门槛,让我能够以一种更加放松的心态去吸收那些原本可能令人望而生畏的复杂概念。不得不说,这种平衡掌握得非常到位,既保证了专业性,又兼顾了读者的接受体验。
坦白讲,这本书的深度足以让资深工程师们也能从中挖掘出新的见解。我注意到其中对“内存模型与并发控制”那一章节的处理,它没有停留在标准的教科书描述上,而是引入了对特定编译器优化策略的剖析,这对于追求极致性能的开发人员来说,是极为宝贵的实战经验。很多市面上流行的书籍往往在涉及到这些底层细节时就草草收场,但这本书却敢于直面这些“硬骨头”,并给出了深入且独到的分析视角。我感觉这本书更像是一份工程实践的“内参”,而不是面向初学者的入门读物,它要求读者具备一定的基础知识储备,才能真正领会其精髓,而一旦领会,收获将是巨大的。
这本书的装帧设计非常典雅,硬壳包裹的封面散发着一种沉稳而专业的质感,让人一拿到手里就能感受到它厚重的分量。拿到书架上,它绝对是一款能瞬间提升整体品味的藏品。内页纸张的触感也相当不错,印刷清晰,字迹工整,即便是长时间阅读也不会让人感到视觉疲劳。对于我这种喜欢收藏纸质书的读者来说,光是拿到这本书就能感受到作者和出版方的用心。整体来看,这本书的物理形态完美地诠释了“经典”二字,让人忍不住想翻开它,去探究其中蕴含的知识宝藏。这本书的封面设计,简约而不失深度,恰到好处地抓住了技术书籍应有的那种严谨与内敛,绝非那种花哨的营销导向型设计。
这本书的内容组织结构简直是教科书级别的范本。作者对知识点的铺陈逻辑性极强,从宏观的理论框架逐步深入到微观的实现细节,过渡自然得如同行云流水。我特别欣赏其中关于“模块化设计原则”的探讨部分,它不是简单地罗列规则,而是通过一系列精心构造的案例,将抽象的概念具象化,让读者能够直观地感受到良好架构的强大生命力。阅读过程中,我发现自己对许多以前模糊不清的底层机制豁然开朗,这种清晰的脉络感,使得学习过程充满了成就感。它不是那种堆砌概念的“百科全书”,而更像是一份精心绘制的导航图,指引着学习者高效地探索复杂的技术领域。
这本书的配套资源和附录部分,是我认为它价值远超定价的关键所在。它不仅仅是一本静态的文本,更像是一个活的学习工具包。作者在书的末尾精心整理了一份“进阶阅读清单”,并附带了一些可以用于实践的源代码片段的指引,这对于希望将理论转化为实际技能的读者来说,简直是雪中送炭。我试着按照书中的步骤搭建了一个小型项目,发现作者提供的参考实现非常健壮且富有启发性,它清晰地展示了书中所述理论的最佳实践形态。这种对读者后续学习路径的周到考虑,体现了作者对读者群体的深度理解和真诚关怀。
存粹探讨个技术问题,书本 6.6.2 STL容器,184页下方最后一段,“前者不具备值语义,必须通过函数Init来复制程序,花销颇大,后者具备值语义,可以通过位拷贝来复制程序,简单高效”。这句话是不是写错了,是不是反了?
存粹探讨个技术问题,书本 6.6.2 STL容器,184页下方最后一段,“前者不具备值语义,必须通过函数Init来复制程序,花销颇大,后者具备值语义,可以通过位拷贝来复制程序,简单高效”。这句话是不是写错了,是不是反了?
存粹探讨个技术问题,书本 6.6.2 STL容器,184页下方最后一段,“前者不具备值语义,必须通过函数Init来复制程序,花销颇大,后者具备值语义,可以通过位拷贝来复制程序,简单高效”。这句话是不是写错了,是不是反了?
书很薄,实际上看作者的几篇博客就可以理解作者要表达啥了;后面的性能分析部分内容也有点水;核心内容值语义这部分内容也不如c++对象那本聊的深入;副标题有c++17,实际连11都没涉及,因为作者的海外工作背景,个别翻译很奇怪,比如cluster一般是集群吧。最重要的 作者总结出来很多之前没听过的术语,但是并没有觉得这些术语怎么和性能优化建立的联系。不推荐。
从另一个角度阐述c++的一些设计和带来的影响