- P6:只要可能,我都会结合使用场景来介绍C++语言和标准库特性,而不是以干巴巴的手册方式给出。
C++的特性太多了,通过具体业务入手学习效率更高,且更能解决实际问题。在这里批评Lippman,不但使用场景结合得很差,而且给的例子也非常糟糕。
- P6:痴迷于每个小细节只会导致过分精致、过分聪明的糟糕代码。为了写出好的程序,真正需要的是对设计和编程技术的理解以及对应用领域的了解。
遗憾的是,由于C++的语言特性,C++程序员很容易写出来过分聪明的糟糕代码。最令人崩溃的是,当你自认为掌握了C++时,你会发现自己根本不了解应用领域。此时的你会懊悔:为什么我的应用领域要使用这么复杂的语言?
- P7:一种程序设计语言要完成两个相关的任务:为程序员提供一个工具,用来指明需要由计算机执行什么动作;为程序员提供一组概念,用于思考能做些什么。
第一个任务对应C语言的设计;第二个任务对应C++的特性。因而,C++可以同时实现高效率(efficient)和优雅风格(elegant)。
- P11:C++能防止意外,但不能防止欺骗。
你完全可以用宏/指针偏移/类型转换等方法来去掉编译器给出的限制。
-
P13:除了
new
,delete
,typeid
,dynamic_cast
和throw
这几个运算符以及try
块之外,其他C++表达式都不需要运行时支持。 -
P14:在实际的程序设计中,了解最生僻的语言特性或是能使用最多数量的特性并没有什么优势。孤立的单个特性没什么意思,一个特性只有在编程技术和其他特性所提供的语境中才有意义。
今后如果写技术专栏,也要考虑到这一点。一定要结合案例,不要把语言特性直接甩到别人脸上。
- P14:学习C++最重要的是重视基本概念(例如类型安全、资源管理和不变式)和程序设计技术(例如使用限定作用域的对象进行资源管理以及在算法中使用迭代器),还要注意不要迷失在语言技术性细节中。
C++是学不完的,对于普通开发来说,知道很多技术细节并没有意义。使用C++语言编程,方法论非常重要:抓住主要概念,不要死扣细节。尊重并采用良好的编程范式。(可惜,C++的教学资源良莠不齐,tc++pl也没有再版)
- P16:在你最初学习C++时不予考虑的或是发现不可行的东西,如今恰恰可能是先进的方法。你只能通过复习基础知识来发现这些。
类似地,读这本书时,也要关心C++从11到20发生了什么变化。
- P16:为了写这本书,我学习了很多新知识,我怀疑几乎没有C++程序员了解本书介绍的所有特性和技术,因此你总会学到一些未曾见过的新知识。
乐
- P21:我们正在创建的系统的内在复杂性总是处于我们能(否)表达的边缘。
是否意味着,我们的表达一定会向最复杂的方向演化?