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