Lean in C++
这其实是一个C++的常识合辑, 不得不说C++的学习给很多人都带来了挑战, 不同于其他知识的学习, C++的学习总是让人对这一块知识的边界望而生畏, 而在平时生活中, 我们对其他知识的学习, 其实多数时候内心都至少会知晓一个边界, 从这个边界往里走, 不断对边界内的知识进行分层, 分块, 解构, 一点一点地完善自己对知识的理解。
但是C++仿佛一上来就把知识边界拉的十分分散, 在中国, 很多人学习编程都是从C语言, 汇编开始, 逐渐丰富到C++, 这导致越往后, 其实越感觉对底层知识边界的模糊。当边界清晰的时候, 人们往往容易建立起对一个知识掌握的信息, 而边界变得模糊的时候, 人们常常会望而生畏, 既无法规划出一个完美的学习策略, 也容易丧失信心。
Lean in 在这里表示一步一步加深理解的意思, 由于C++的知识边界模糊, 我希望采取一种渐进式加深理解的方式,而非直接在知识层面进行分层理解, 我们实际上需要的是在认知的早期阶段就构建出一种让自己有条不紊逐渐变强的策略, 而非对一事一物完美无缺的理解。这也是能够体现学习经验是否丰富的一个地方。既然在一开始就不能够或者就无法设置一个清晰的知识边界, 我们不妨先设立一个框架, 在一个三维立体的知识地图里面先抓住一个自己最容易抓住的把手, 然后从这个点出发, 不断在层次中进行水平或者垂直的移动, 来丰富自己已经掌握的知识结构;
我们先从最基本的C/C++语法的关键字开始,从最小的代码片段需要注意些什么开始,这里主要是消灭在阅读代码的时候一些容易混淆的语法点,称之为Phase 0
暂时计划Phase1可以是多个代码片段, 函数, 类和对象, 在构建一个大程序的时候, 一些让人傻傻分不清的概念。还有一些常规语法之外的编程技巧, 常规用法。例如前向声明, RTTI, CRTP,
更进一步, 我们希望通过Phase2 和Phase 3 , 能够了解到最核心的内容, 通过理清楚这些内容, 我们能够过渡到计算机的各个方面, 例如OS, compiler, network SW stack中, 以及Compute Arch, 理解软硬接结合之后是如何工作的,
前面几个其实都是线性的关系, 到Phase3 其实就可以分叉, 会涉及到很多很多不同的方面里面去。 需要其他的很多领域知识, 并且要循环往复在不同的phase之间进行巩固对这些知识的理解,从而不断拓展和前进;
关于如何划分不同的Level, 还在规划中,但是已经有了一个基本的结构