木鸟杂记

分布式系统,数据库,存储

知新的关键——类比

这一年来,由于各种原因,需要不断地学新东西。于是如何高效地学习,就成了一个随之而来的问题。最近看了一些书和公开课,包括 Scott H Young 的 Learn More, Study Less(以下简称 LMSL),和 Coursera 上的公开课学会如何学习(Learning How to Learn,以下简称 LHL),发现了一些有意思的观点,趁着热乎(虽然都还没看完),记下来梳理一下,也希望能对大家有所启发。

这两个资源在进行讲解时,都使用了类比(analogy)。

LMSL 中提出了整体学习法(Holistic learning),其基本思想是:你不可能孤立地学会一个概念,而只能将其融入已有的概念体系中,从不同角度对其进行刻画来弄懂其内涵和外延。

作者:木鸟杂记 https://www.qtmuniao.com/2023/08/21/use-analogy-to-know-more 转载请注明出处

并且书中使用三个类比对整体学习法进行拆解:

  1. 构件(Constructs):一组紧密相关的知识。如学习 C++ 时,构件就是 C++ 所涉及到的各种知识。
  2. 模具(Models):对构件抽象出的可以进行移植和复用的主要特点。所谓“举一隅不以三隅反,则不复也”。
  3. 高速路(Highways):看似毫不相干的概念间的连接。如跨领域、交叉学科间的某些概念的相似性。

highway-in-brain.png

即,你在做了足够多的构件之后,就可以抽象出某些可复用的模具,以快速的造新构件。而由于复杂构件的组合性,不同领域的构件可能在某些角度具有相似性,这些相似性便是不同概念团之间的高速路。这个模型很像求 K 临近的 HNSW 算法中所涉及到的小世界模型思想。实践多了(构件)大家都会有一些总结(模型),但真正让你与众不同的是,这些跨领域、多维度的连接(高速路)。

LHL 中提出了专注模式( Focused Mode)和发散模式(Diffuse Mode)的两种思维方式。前者我们常常提起,就是指我们一心一意扑在某个东西上;而后者,我们可能不太熟悉,是指我们处于相对放松的状态,原本不太相干的知识团发生了连接。为了进行说明,课程使用我们小时候玩的弹珠游戏来进行类比。

brain-two-models.png

在专注模式下,缓冲器(图中蓝色的点)很密集,已经学到的知识就像是在小范围内形成的一些固定通路(图中橙色通路)。我们在对熟悉的事务相关联的注思考时,可以思路顺畅的进行推理和思考。但是对于一些从未接触过的新的概念(图中绿色通路),则不知道这个模式在哪里、看起来如何。对应到图中,我们不知道如何让弹珠抵达这个区域。

这时,要开启一种新的思维模式,我们需要一个不同的思路——发散模式。在发散模式下,橡胶缓冲器很稀疏,想法(弹珠)蹦出来后,由于阻碍较少,可以在大范围内跳来跳去。在这种模式下,我们可以从更高的维度、全局鸟瞰的视角来在不同的概念间进行穿梭,从而建立新的连接、打开新思路的入口。这两种模式是互斥的,比如你在进行全景式思考时,势必就不能让思维陷入到某个细节问题的详细解决办法中。

从上面两个例子,我们可以看出:虽然用来类比的意像并非百分之百贴切,但确实抓住了所阐述道理的一些核心特点。这便是类比的威力所在,通过大家熟知的意像来对新概念体系进行“速写”,然后再展开细节,对这些意像进行适当地裁剪,从而达到对真实的逼近。总的来说,类比既是我们进行学习的重要倚靠,也是我们进行阐释的强力手段。

类比,或者隐喻(metaphor)在软件工程中也非常重要。代码大全(code complete)在第二章中提到了这一点。我自己的感受是,通过隐喻选取合适的概念体系对你的代码进行组织,可以大大降低代码编写和维护的成本。随便举个例子,在构造分布式任务调度系统时,我们通常会涉及以下概念:

  1. Job:逻辑上的一个任务
  2. Tasks:物理上调度到不同节点上的、属于同一个任务的一组子任务。
  3. Hint:用以任务调度的约束,如容错域、资源余量。
  4. Scheduler:组织调度策略的任务调度方。

这些概念最初取材于现实的工业生产,我们将其拿来,通过合理地定义这些概念的含义和联系,可以轻松地构造复杂的任务调度系统。

最后,希望类比成为你打开新世界大门的钥匙。


本文来自我的小报童付费专栏《系统日知录》,专注分布式系统、存储和数据库,有图数据库、代码解读、优质英文播客翻译、数据库学习、论文解读等等系列,欢迎喜欢我文章的朋友订阅👉专栏支持,你的支持对我持续创作优质文章非常重要。下面是当前文章列表:


我是青藤木鸟,一个喜欢摄影、专注大规模数据系统的程序员,欢迎关注我的公众号:“木鸟杂记”,有更多的分布式系统、存储和数据库相关的文章,欢迎关注。 关注公众号后,回复“资料”可以获取我总结一份分布式数据库学习资料。 回复“优惠券”可以获取我的大规模数据系统付费专栏《系统日知录》的八折优惠券。

我们还有相关的分布式系统和数据库的群,可以添加我的微信号:qtmuniao,我拉你入群。加我时记得备注:“分布式系统群”。 另外,如果你不想加群,还有一个分布式系统和数据库的论坛(点这里),欢迎来玩耍。

wx-distributed-system-s.jpg