- Learn More, Study Less 中提出了整体学习法(Holistic learning),其基本思想是:
- 你不可能孤立地学会一个概念,而只能将其融入已有的概念体系中,从不同角度对其进行刻画来弄懂其内涵和外延
- 并且书中使用三个类比对整体学习法进行拆解:
- 1-构件(Constructs):一组紧密相关的知识;如学习 Java 时,构件就是 Java 所涉及到的各种知识
- 2-模具(Models):对构件抽象出的可以进行移植和复用的主要特点;所谓 “举一隅不以三隅反,则不复也”
- 3-高速路(Highways):看似毫不相干的概念间的连接;如跨领域、交叉学科间的某些概念的相似性
- 即,你在做了足够多的构件之后,就可以抽象出某些可复用的模具,以快速的造新构件
- 而由于复杂构件的组合性,不同领域的构件可能在某些角度具有相似性,这些相似性便是不同概念团之间的高速路
- 实践多了(构件)大家都会有一些总结(模型),但真正让你与众不同的是,这些跨领域、多维度的连接(高速路)
- Learning How to Learn 中提出了专注模式( Focused Mode)和发散模式(Diffuse Mode)的两种思维方式
- 前者我们常常提起,就是指我们一心一意扑在某个东西上
- 而后者,我们可能不太熟悉,是指我们处于相对放松的状态,原本不太相干的知识团发生了连接
- 为了进行说明,课程使用我们小时候玩的弹珠游戏来进行类比:
- 在专注模式下,缓冲器(图中蓝色的点)很密集,已经学到的知识就像是在小范围内形成的一些固定通路(图中橙色通路)
- 我们在对熟悉的事务相关联的注思考时,可以思路顺畅的进行推理和思考
- 但是对于一些从未接触过的新的概念(图中绿色通路),则不知道这个模式在哪里、看起来如何
- 对应到图中,我们不知道如何让弹珠抵达这个区域
- 这时,要开启一种新的思维模式,我们需要一个不同的思路 —— 发散模式
- 在发散模式下,橡胶缓冲器很稀疏,想法(弹珠)蹦出来后,由于阻碍较少,可以在大范围内跳来跳去
- 在这种模式下,我们可以从更高的维度、全局鸟瞰的视角来在不同的概念间进行穿梭,从而建立新的连接、打开新思路的入口
- 这两种模式是互斥的,比如你在进行全景式思考时,势必就不能让思维陷入到某个细节问题的详细解决办法中
- 从上面两个例子,我们可以看出:虽然用来类比的意像并非百分之百贴切,但确实抓住了所阐述道理的一些核心特点
- 这便是类比的威力所在,通过大家熟知的意像来对新概念体系进行 “速写”,然后再展开细节,对这些意像进行适当地裁剪,从而达到对真实的逼近
- 总的来说,类比既是我们进行学习的重要倚靠,也是我们进行阐释的强力手段
- 类比,或者隐喻(metaphor)在软件工程中也非常重要
- 代码大全(code complete)在第二章中提到了这一点
- 通过隐喻选取合适的概念体系对你的代码进行组织,可以大大降低代码编写和维护的成本
- 随便举个例子,在构造分布式任务调度系统时,我们通常会涉及以下概念:
- 1-Job:逻辑上的一个任务
- 2-Tasks:物理上调度到不同节点上的、属于同一个任务的一组子任务
- 3-Hint:用以任务调度的约束,如容错域、资源余量
- 4-Scheduler:组织调度策略的任务调度方
-
这些概念最初取材于现实的工业生产,我们将其拿来,通过合理地定义这些概念的含义和联系,可以轻松地构造复杂的任务调度系统