从我的经验来看,知识主要分为两种,

1、事实性知识 2,推理性知识

详细介绍:

1.1 事实性知识。

就是非常简单的你知道就会,不知道就不会的情况。

  • 我们在中学的语文中的古诗词默写,就属于这类知识;
  • 数学中的各类公理也是,因为公理不需要推导;
  • 在编程的世界中,各类配置文件的各种选项分别代表什么意思,也是这类知识;
  • 编程语言中的各种关键字是什么意思,怎么用也是这类知识。

1.2 推理性知识。

是需要理解,消化才能学会使用的知识。

  • 在中学里,作文中的“引用”名人名言属于事实性知识,但是“化用”名人名言、名篇名句就是推理性的知识了,知乎的孔乙己段子手也算一种应用。
  • 数学里的定理,就属于这类知识,这也是我们老师教导我们要学会和理解定理推导过程的原因,忘了可以现推。
  • 在程序的世界里,就是每个框架使用的设计模式,使用的编程模型,都是这类型的知识。理解了这个,对于程序的理解就容易多了。
  • 编程语言中的关键字为什么这么设计,就是这类知识了,理解了设计的原则,才能更好的使用语言。

3 以下聊一聊获取这两种知识的途径:

3.1 事实性知识。

在古代,主要依靠大量的阅读和经历,比如我们形容书多的成语,见多识广、博闻强识,都是这样的表述。 武侠中最著名的莫过于王语嫣同学了,天下武功几乎没有不知晓的,就是靠家里的藏书。 在现代,书籍已经非常多了,是信息爆炸的时代,所以我们更主要的是要依靠搜索引擎,

  • 主要包括两个方面:

  • (1)使用正确的搜索引擎。

所谓外事不决问公瑾(谷歌),内事不决问张昭(百度)。问题要向正确的搜索引擎提问。

  • (2)正确的使用搜索引擎。

在发现程序的报错信息的时候,需要从程序中选择最有可能获得问题正确答案的关键词,来输入搜索引擎进行搜索。

3.2 推理性的知识。

  • 在古代,推理性的知识需要先进行大量的事实性知识的学习,触类旁通、举一反三,就是对这类知识的形容。
  • 武侠中最著名的莫过于慕容家族了,以彼之道,还施彼身,绝对不是说说而已的,鸠摩智同学在这方面也是专家。
  • 中学名篇的《滕王阁序》中王勃的“落霞与孤鹜齐飞,秋水共长天一色”:化用庾信《马射赋》:“落花与芝盖同飞,杨柳共春旗一色。” 这一句素称千古绝唱。
  • 现在的多路IO复用的模型主要分为Actor和Reactor模型,只要把这两个搞定了,很多的网络框架就都能看明白了。而现在的这种知识的学习,除了古代的方法外,还可以在看一些源码分析,和深入浅出之类的书,例如我学习MFC就是看的侯捷老师的《深入浅出MFC》。当然还有一种就是自己设计并实现一套程序,在实践中学习并且掌握。