头图
感觉这篇文章对非计算机专业的人来说阅读起来会有点不友好,后面会考虑重新探讨这个问题

hello,我的朋友,我预计想跟你讨论知识的结构,在这个基础上我们讨论如何学习知识,提到知识的结构我想到了两张图:

首先我认为知识是网状的,他们分散成一个又一个节点,而学习的过程中就是在旧有的知识点创建连接,或者向脑中加入新的节点,但是新加入的节点未必和旧有的节点连接在一起,比如当我学习Java的时候,我学到了线程这个概念,这个概念有一定的发展历史,在操作系统课程中想来已经介绍过了,但是这些概念散落在我的脑海里面,他们之间并没有建立连接,于是我在重新学习线程的时候,开始重新学习线程,开始不孤立的只站在Java角度看待问题,在一刚开始我得到的概念是引入线程是为了更好的利用多核心,但这只是一方面不是吗? 另一方面是为了更好的共享内存,这就说到了第二幅画在素描,看起来这一笔是对的,但其实还不那么对,于是我转而在某一天看操作系统的过程中发出了提问,早期的进程切换就已经能利用多核心了不是嘛,那引入线程其实共享变量的目的更多一点不是吗? 于是我去了解了操作系统的发展史,我看到了早期的操作系统并没有提供线程内核级别的实现,所以早期的线程是进程内部切换执行流,你想到了Java的绿色线程是吗? 这种实现的线程更适应单核,后面的多核开始出现,操作系统开始适应CPU,你看在了解线程的发展史的过程中,素描的越来越清晰,也许有一笔是错的,但这是没办法的事,我们需要试错,就像小孩子学会走路一样,总要摔倒几次,我们走路就越发熟练,同样的在认知学习这件路上也是,我们会像是素描一样,偶尔会画错几笔,但是最终我们画的越来越清晰,我们也会去尝试打断一些知识点之间的连接,让他们重新建立,这就是对知识的重新理解。也就是说到现在我对我的知识体系仍然存在一些疑问,但不影响我借助这套体系来解决问题,人类的历史中不缺乏的例子,你一定知道我想要说些什么,那就是高中物理学教材的一段话:

当20世纪第一个春天来临之际,英国物理学家、被授予"开尔文勋爵"的J.J.汤姆孙在“新春献词”的演说中,踌躇满志地宣告: "科学的大厦已经基本建成......" 后辈物理学家只需做一些零碎的修补工作就行了。

但他也承认, 动力学理论断言热和光都是运动的方式,现在这种理论的优美性和清晰性被两朵乌云遮蔽得黯然失色了。看起来还不是小乌云,不然也不会将动力学的遮蔽的黯然失色。那这两朵乌云是什么问题呢,第一朵乌云是随着光的波动论而开始出现的。它包括这样一个问题: 地球如何能通过本质是光以太这样的弹性固体运动呢? 第二朵乌云是麦克斯韦-玻尔兹曼关于能量均分的学说。随后第一朵乌云导出了相对论,第二朵则导出了量子力学。 所以我对我的知识理论体系并没有那样完全确认,我承认他是有问题的,我时常会用一些可能、也许吧这样的词,这并不是在敷衍,这代表我也在思考,我觉得还有哪些我没看到,所以我会用可能、也许这样的词,来表达我的推测。

写到这里我想到了高中教材上面的一句话,我打开了搜索引擎,重新读高中物理教材,看到了一些让我心动的话:

物理学是探索自然界最基本、最普遍规律的科学,物理学的一般探索过程是通过观察和实验积累经验,在经验事实的基础上建立物理模型,提出(往往是猜测出)简洁的物理规律(物理学要求这些规律必须是定量化的),也就是用公式或数组表达的,用它们语言未知现象,再用新的实验区检验这些物理模型和物理规律,去否定或进一步修正它们。

这段话你看到了什么,我看到了猜想、否定、修正。大胆的去猜想,小心的去验证,这是探索真理的方式,有一段时间我会去好奇看源码有没有什么标准的方法, 我有的时候会去想看源码有没有一种标准的方式,因为我看源码一部分是靠猜想,我感兴趣哪一点的实现的时候,比如@ComponentScan的原理,这个是如何实现的,那我就会去看这个@ComponentScan的注释,然后用IDEA的快捷键find usages,去找哪些地方被调用,然后去猜是哪个调用处理的,然后不断的试探,有的时候我内心不认可这种猜,我希望确定一些,但猜想为什么就不是一种标准方式呢。有些道理讲起来很简单朴素,但是始终是纸上得来终觉浅,绝知此事要躬行。

我接着翻阅物理教材,看到了物理教材上出现了我感兴趣的问题:

黄娃插问道: 老师,什么是物理模型?

老师解释道: "实际问题往往是复杂的,其中包含一些非本质的枝节,物理模型就是把实际问题理想化,先略去一些次要因素,突出其主要因素,不这样做我们就得不到简洁的物理规律"

那么如果让哲学家维特根斯坦来回答这个问题,那么维特根斯坦会首先对这个问题进行解释,什么是物理,什么是模型,对于哲学家维特根斯坦来说,首先先问是什么,再问是不是,如果让维特根斯坦定义哲学,大概会是概念考察,对探索任何问题之前,都必须将使用的概念界定清楚,若不能界定清楚这些概念,花再多时间探索前面的问题,也得不到任何有效结论,徒劳而无功。在每一次的日常思考中,我们同样在使用大量的概念,我们总是对概念来说事情,却很少对概念有所说,我们是先学会使用概念,后明白这个概念意味着什么,有人指出举出穷究概念会让人陷入虚无主义,那么如果让维特根斯坦来辩白,那么维特根斯坦会首先说,请问什么虚无主义,在我看来每一次将模糊的概念界定更精确,我们对客观事物和客观规律的认识,就会更加深入,概念考察是任何有效思考的基石,所以当我考察线程安全问题的时候,我会考虑什么是线程,什么是安全,当我看到Java内存模型的时候,我会首先考察什么是模型,然后将其组合在一起,考察这个问题。在这里我们又多了一种求知的手段,不断的明确概念,大胆猜想,小心求证,建立模型,然后验证去否定或者进一步去修正他们。

我相信你也听到过一句话,我这里无法记起原来的话,但是我能复述出来大致的意思,如果你能讲给一个老太太听,用白话讲给他,让他也明白,那说明你才是懂了。这句话某些程度上是对的,在给别人讲的时候,自己也清楚一些问题,但是完全套用这段话,认为如果一个人不能用白话讲给别人听就是不懂,某种程度上也是一种诘难,这里我们可以举一个例子来反驳这段话,让我们请出Galois,他的主要成就之一就是发现了n次多项式可以用根式解的充分必要条件,他引入了群的概念,为了解答这个问题,Galois引入了太多概念,过了几十年之后才有人看懂他的理论,对于一个经过数学训练的普通本科生,都无法接触他的理论,更何况是一个老太太,不存在一种模型可以应对所有的场景。

科学的发展是一个抽象的过程,要向普通人介绍一些理论,只能借助类比或者比喻,这让我想到希格斯玻色子, 如果你没听说过这个名词,我想他有一个更加闻名遐迩的名字你一定听说过,那就是上帝粒子,1993年,英国科学大臣征集面向公众的希格斯场和希格斯粒子最佳解释,奖励为一瓶香槟。最终伦敦大学学院的大卫·米勒教授赢得了这瓶香槟。米勒教授把希格斯场比作一群摩肩接踵的鸡尾酒会参加者,一个普通人可以轻松穿过人群,而一个大咖走来,会瞬间吸引人围过来,大咖穿过人群就会很费劲。希格斯场与粒子作用与之类似:粒子会吸引希格斯场过来,减慢自己的行进速度,减少得越多,代表希格斯场赋给该粒子的质量越大。

这个解释相对通俗易懂,但其实还是有些名词需要解释,希格斯场和粒子,要解释希格斯场我们还要比喻类比,在比喻类比的时候,也在失去事物原本的样子,所以有些人懂了这个类比,但未必真的理解了上帝粒子是什么,如果他也是通过这种失真的比喻去理解的话,那其实他并没有懂什么。马斯克说过:

我认为很重要的是,要用第一性原理而不是用通常的类比方法,我们日常习惯用类比法来理解新事物,认为做这件事的方法就和另外一件事的方法差不多,或者就和别人的做法差不多。因为用类比法的话,脑子更容易理解接受,相对于第一性原理来说,但第一性原理其实是看待世界最本质的方法,它意味着你需要将事物拆解到最基础的本质上,然后找到可以确信的东西,或者最接近本真的东西。然后从那个基础上往上推导,确实需要消耗大量脑力。当然有人曾说过,电池组真的很贵,它就该那样贵,因为历来如此,过去一直都这样,其实那样想挺傻的,因为你一旦按照这个思路去看待一切新事物的话,你会发现啥也做不成。所以就好像,你不能说因为有马了,就没人需要汽车了,因为马足够好用,人们也习惯了,马吃草就行,草又多得是。而且你知道的,它,又不像汽油一样,需要找,需要买。这样的话,人们永远不会有汽车的,过去确实有人说过这样的话,说回电池的话,人们会说,历史的成本是大概是600美元每千瓦时,并且将来也没有什么成本降低,我就会想问,电池是有什么组成的,第一性原理会指引说,组成电池的材料是什么,材料的现货价是多少。所以你可以分析,材料有钴、镍、铝和碳,以及一些聚合物,还有一个钢盒子,所以分析拆解以后,假如从伦敦金属交易所直接买的话,这些材料的成本分别是多少,结果只需要80美元每千瓦时。显然只需要,多思考一些好办法,将那些材料组合成电池组单元,就可以得到便宜的多的多的电池,前人都未设想过的便宜。

那什么是第一性原理,这要追溯到古希腊哲学家亚里士多德: 任何系统中都存在最基本的命题,不能违背、不能删除。第一性原理是整个体系的根基,无论是第一性原理还是类比其实都是推理方式,已知的推理方式有: 归纳、演绎、类比,在进行推导的时候,类比有的时候要有一种先验的假定,同类的具备相同的性质,有的时候类是一种很粗糙的划分,即使是同类未必具备相同的性质。归纳是从多个个别事物中获得普遍的规则或规律,这让我想到了教科书的一些话,等式两边是同一观点的不同看法,我想起庞加莱的一一句话:

数学是赋予不同事物相同名称的艺术

演绎法就是从已知的定律经过逻辑推演得到新的定律的方法,从一般性的前提出发,通过推导,得出具体陈述或个别结论的过程。我感觉计算机世界的种种表象都是在基础的几个规则上展开,尽管形式不同,但他们都基于几个非常简单的规则,表现的形式多种多样,我觉得记录具体的形式,不如记录最简单的规则,然后借助演绎推理,在需要的时候导出所需的形式。

在高中阶段,我们会有一份考纲划定哪些是重点考试点,哪些是次要知识点,但是那只是应试,我想起一句话:

当你成为某个领域的专家,遇到的问题就会非常具体,很可能只有少数人遇到过。再想进一步前进,互联网也不是很有用,只能靠自己摸索、应用、实验和协作。这些都相当慢,这就是为什么专家再要提升自己,往往要花费数年时间

是的,当你成为某个领域的专家,遇到的问题会非常具体,所以去寻找一份大而全的考纲是不切实际的,每个人都工作在不同的领域。庄子曾说过: 生也有涯而*知也无涯, 计算机的世界是一片汪洋,每一片领域都会有很多点,当你在探索的过程中,如果没有一个目标大致会迷失在这片海洋里,所以每次启航都需要一个终点,大多数人的好奇心很早就死掉了,一些人不会再更新他的认知模型,固执的用自己就有认知模型去解释世界,所以要保护好你的好奇心, 好奇心是无价之宝,这会让你提出问题,而提出问题会让我们的自画像越来越清晰,我们的认知网的节点会越来越多,是的,这是走向专家的道路。那如何提问呢,根据我混迹技术群的经验,很多人期待的是像高中老师一样的人物,你说不懂,他们对这道题完全了解,可以完全讲给你听,把这道题目的思路完全讲给你听,我想起他们会直接给个截图,然后不到十个字,请问有xx大佬嘛,这个问题是为啥呀。 但这其实有点难为社区的人,社群的人并不是AI,无法自动获得上下文去提问,所以如何提出问题是一个需要学习的能力,什么是杰出的问题嘛:

费马大定理很清晰,没有什么歧义,在我看来这就是杰出的问题,明确问题的上下文,明确想要知道的答案,让人一目了然,杰出的问题意味着杰出的洞察力,所以该如何学习呢,那当然首先要提出杰出的问题,具体的问题得到具体的答案,我们为什么要具体,让我们从现代汉语的知识这个词来说起,认识这个词在现代汉语中是相当笼统的,覆盖了知道、理解、辨认等多方面的汉语,也就掩蔽了这些不同思维样式之间的差异。仅就知道这个词这个概念来说,还可以分为知道是这样和知道这样更好,所以在提问的时候明确问题的时候也在明确答案,比如提出了这样一个问题深度理解List,该怎么理解这个问题,深度有多深,多深算深,这个问题颇像八股取士:

子谓颜渊曰:“用之则行,舍之则藏,惟我与尔有是夫

有的时候当问题不是杰出的,答案也就会有问题,但是像八股文一样你出的多刁钻,但是也可以写出杰出的文章,但这并不适合探索真理。 我们需要将问题分解,提出有效而杰出的问题,我们可以将深度分解为集合框架的设计理念、代表集合框架的设计思想等,我们看待的问题的时候分为整体和局部,看待问题分为从整体上看,从局部上看,确定战略,然后分解目标。你想到了什么,是否想到了数学呢,数学的学习是一个逐步抽象的过程,但我们不仅要学会从具体变成抽象,还要学会将抽象还原为具体,这是另一种解决问题的策略。

到这里我们已经逐步明确了我们学习的手段,知识是网状的,不会有一份大而全的考纲,顺着每个点走下去都可能碰见无穷多个分叉,所以在探索的时候常常要确定一个问题,我想知道些什么,我的目标是什么,不要将问题提的太笼统这不利于我们解决问题,明确问题的本身,也是在明确问题的边界。修改基础的规则,推导出来就可能导出截然不同的体系,靠近事物的本原,实现最小化记忆原则,这会让我们轻松一些。当我们看待问题的时候,我们有三种策略: 整体和局部、抽象和具体、历史和发展。整体是大方向的设计,结构性设计,战略性设计,局部是更细的实现,很多问题在局部无法得到答案的时候,常常要站在整体的角度去考量。抽象则是在研究问题的时候尝试摒弃一些无关因素,但是抽象并非是一剂治愈百病的良药,许多问题我们也需要将抽象还原为具体。 一些问题要站在历史长河去考虑,很多东西都有历史因素,你可以看到早期的线程概念主要是为了共享变量,因为早期根本就没有多核,意味着一些问题需要考虑更多的历史因素。那么如果不知道问题的突破口在哪里呢,那么不妨试探,大胆试探,大胆猜想,小心验证。

参考资料

[1] 教科书上有哪些令你触动的话?

[2] 概念考察

[3] 希格斯玻色子是什么?为什么被称为「上帝粒子」呢?

[4] 如果希格斯玻色子(上帝粒子)被确认存在,会对世界造成什么样的影响? https://www.zhihu.com/search?type=content&q=%E5%B8%8C%E6%A0%B...

[5] 科学技术相关的逻辑(一)归纳与演绎 https://www.acabridge.cn/hr/xueshu/202105/t20210526_2113791.s...


北冥有只鱼
147 声望35 粉丝