快速学习

你也许会被这个标题吸引进来,学习可以是一个“快速”的过程么?俗话说欲速则不达,速度和质量往往无法兼得。但我认为在你掌握合适的方法的情况下,学习可以是一个可以“快速”的过程,但是不太会是一个“轻松”的过程。

本节讲解了我们在学习知识的四个阶段以及不同阶段之间的转换,希望可以为你带来一些思考。

认知的四个阶段

在认知科学中人对于知识的理解被分为四个阶段:

如何在阶段之间转化

1. 从“无意识的无能力”到“有意识的无能力”

这个阶段不要局限于使用课本来进行学习,尤其是国内的课本,国内的课本对于很多知识的讲解都是基于文字的,没有例子,没有实际的场景,大多数是只用只用干巴巴的文字来表述“作者自我的逻辑”,国内写书的老师大多只是为了完成任务,混绩效赚钱,并不从学生以及初学者的角度出发来编写教材,所以书常常看起来像八股文一样,晦涩难懂。

使用这些资源来学习常常会让你怀疑人生,你会觉得是不是自己智商有问题,难以理解这些问题。诚然,我承认不同人在学习这些抽象知识时会有天赋上的差距,但是更重要是 我们学习的方式以及所用的资源,学习知识的过程不应该是困难重重的,应该是循序渐进的,从简单到复杂的,多维度的。

以下是笔者在过往咨询经验中总结的一些经验,如何快速地对完全陌生的知识建立起直觉:

  • 由于人们通常难以通过纯文字来深入理解抽象概念,我们的大脑对于图像和故事结构更为敏锐。因此,当遇到难以把握的概念时,选择那些有助于形象化理解的资源,例如包含动画演示的视频或以实际例子为基础的外文教材,往往更为高效。
  • 频繁地询问 WHAT,明确这个知识点的实际应用或其存在的目的,这可以为你的学习过程提供清晰的导向。
在WAHT这个阶段,你可能会询问如下问题(以cache的学习为例):

cache是用来干嘛的?
cache为不同映射方式的区别是什么?
cache的结构是什么样的?

2. 从“有意识的无能力”到“有意识的有能力”

这个阶段在我看来也是最困难的,处于“有意识的有能力”时,你的认识是模棱两可的,有时候是说不清道不明的,这个时候你可以说具备了理论上的知识,但是对于如何将这个知识实际利用是毫无头绪的。

以下是笔者的一些经验,如何进入到第三个认识阶段:

  • 在实际中去尝试应用知识,尝试不同的练习题和实际场景,以帮助巩固和应用所学知识。在这个过程中你会遇到很多“问题”,你需要掌握讲这些“问题”具象化的能力,用语言和文字定义是哪些点还没有真正理解,在找到这些点后,首先自己思考尝试解决疑难,如果不能的话可以求助他人或者进一步查询其他资料。
  • 多问一问 HOW,不同于“what”的是,“how”更加注重实际操作和应用。简单的记忆并不足以掌握如何操作或实践。你需要培养分析和推理能力,并学会有效查找和使用相关资料来帮助解决问题。
在HOW这个阶段,你可以询问如下问题(同样以cache的学习为例):

○ cache是用来加速地址读写的,所以从一个物理地址到读取cache中的内容,具体是如何进行的?
    (可以包含如下子问题)
    ○ 如何去通过地址去判定应该访问哪几个cache块?
    ○ 对于不同的映射方式,如何判断是否命中?
    ○ 如果没有命中会怎么样,写策略在这个过程中充当什么作用?

3. 从“有意识的有能力”到“无意识的有能力”

在 “有意识的有能力” 这个阶段,你已经可以使用知识去解决问题,但是仅仅是解决问题而已,有的时候这个过程是机械化的,遇到一些新的问题你就可能有一些不知所措了。

进入“无意识的有能力”这个阶段,需要你对于知识有一个更高维的认知,可以通过如下阶段实现:

  • 使用费曼学习法,假如你是一个老师,要将这个知识教给其他初学者,你会如何构建自己的语言,如何讲述,通过向他人传授知识的过程(可以不用真的找人教),以及尝试用简单的语言去阐述复杂抽象的知识,你可以从另一个层面上思考自己学习过的知识。
  • 多问问WHY,思考为什么这样实现,采用其他的方式设计会怎么样。并且尝试与其他领域的知识或技能结合,这样可以加深对当前知识的理解,也可能导致新的发现或创新。
在WHY这个阶段,你可以询问如下问题,尝试将不同的知识结合起来:

○ cache的不同映射方式有什么优劣
○ cache相比于主存的关系和TLB相比页表的关系有什么联系?TLB结构和cache有什么类似之处?
  TLB也可以使用像cache一样的映射方式么?
○ 操作系统使用虚拟地址访存,从 TLB ----> 页表 ----> cache ----> 内存,这个过程具体发生了什么?