Skip to content

Latest commit

 

History

History
40 lines (20 loc) · 3.04 KB

tcxxpl.md

File metadata and controls

40 lines (20 loc) · 3.04 KB

第一章 致读者

  • P6:只要可能,我都会结合使用场景来介绍C++语言和标准库特性,而不是以干巴巴的手册方式给出。

C++的特性太多了,通过具体业务入手学习效率更高,且更能解决实际问题。在这里批评Lippman,不但使用场景结合得很差,而且给的例子也非常糟糕。

  • P6:痴迷于每个小细节只会导致过分精致、过分聪明的糟糕代码。为了写出好的程序,真正需要的是对设计和编程技术的理解以及对应用领域的了解。

遗憾的是,由于C++的语言特性,C++程序员很容易写出来过分聪明的糟糕代码。最令人崩溃的是,当你自认为掌握了C++时,你会发现自己根本不了解应用领域。此时的你会懊悔:为什么我的应用领域要使用这么复杂的语言?

  • P7:一种程序设计语言要完成两个相关的任务:为程序员提供一个工具,用来指明需要由计算机执行什么动作;为程序员提供一组概念,用于思考能做些什么。

第一个任务对应C语言的设计;第二个任务对应C++的特性。因而,C++可以同时实现高效率(efficient)和优雅风格(elegant)。

  • P11:C++能防止意外,但不能防止欺骗。

你完全可以用宏/指针偏移/类型转换等方法来去掉编译器给出的限制。

  • P13:除了newdeletetypeiddynamic_castthrow这几个运算符以及try块之外,其他C++表达式都不需要运行时支持。

  • P14:在实际的程序设计中,了解最生僻的语言特性或是能使用最多数量的特性并没有什么优势。孤立的单个特性没什么意思,一个特性只有在编程技术和其他特性所提供的语境中才有意义。

今后如果写技术专栏,也要考虑到这一点。一定要结合案例,不要把语言特性直接甩到别人脸上

  • P14:学习C++最重要的是重视基本概念(例如类型安全、资源管理和不变式)和程序设计技术(例如使用限定作用域的对象进行资源管理以及在算法中使用迭代器),还要注意不要迷失在语言技术性细节中。

C++是学不完的,对于普通开发来说,知道很多技术细节并没有意义。使用C++语言编程,方法论非常重要:抓住主要概念,不要死扣细节。尊重并采用良好的编程范式。(可惜,C++的教学资源良莠不齐,tc++pl也没有再版)

  • P16:在你最初学习C++时不予考虑的或是发现不可行的东西,如今恰恰可能是先进的方法。你只能通过复习基础知识来发现这些。

类似地,读这本书时,也要关心C++从11到20发生了什么变化。

  • P16:为了写这本书,我学习了很多新知识,我怀疑几乎没有C++程序员了解本书介绍的所有特性和技术,因此你总会学到一些未曾见过的新知识。

  • P21:我们正在创建的系统的内在复杂性总是处于我们能(否)表达的边缘。

是否意味着,我们的表达一定会向最复杂的方向演化?