代码之髓读后感——关于学习

一些学习的方法:

具体的知识与抽象的知识

学习之路必经从具体到抽象的这样一个过程。

具体的知识只能应对特定的具体环境,而面对瞬息万变的世界,唯有抽象出来的 元知识才能真正起到作用。具体的知识在特定的环境下可以快速提升你的工作效率,但是环境一变,这种知识就无法使用。而抽象的 元知识, 也需要与具体的实践相结合,才能在实际应用中发挥价值。实践是检验真理的唯一标准。这是毋庸置疑的。

这样也引出来一种判别我们所学有没有成为真正的知识的方式。那就是,可以考察能否具体的举例或者实现来确认。真正的知识是可以使得我们 触类旁通的。只是一味的鹦鹉学舌,重复讲讲,也无法利用知识创造价值。

学习的策略

学习,终究想吃肉一样,一口吃不成个大胖子。到底讲求的还是 细嚼慢咽。这个词中,一个“细”字点出了真意。“分而治之”,小块消化。

这样的思想,在面对少量的信息时,效果很好,效率也可以。

但是,现在这样一个信息爆炸的年代,这样是远远不够的。

所以现在我们就面临着一个问题——如何对信息作取舍?什么样的信息重要,什么样的信息需要,什么样的信息可以被扔掉...

但是,若要得出一个明确的答案,那我们实际上应该对于该领域十分熟悉,水平并不低,那这样不就和我们的现况正好冲突了么?先有鸡还是先有蛋?

书中提到了一些方法:

  • 向身边的熟悉这些信息的人请教——可能身边没有,而网上的又不一定可信

  • 查阅作者本人的资料——及直接阅读第一手信息——可能会难懂,内容太多,或者语言阻碍等等

  • 阅读其他人的理解总结——二手资料——可信度,准确度等等难以保障

这里面其实暗含着一种对于大量信息进行阅读的一个必要过程(因为我们实际上多数是偏向于后两种),这个过程一般等价于一种煎熬。而且费时费力,有时还不得好。书中提到了三种策略:

  1. 从需要的地方开始阅读

  2. 从概要开始阅读再细读

  3. 从头到尾通篇阅读手抄

各有各的实用价值。

按需获取简单直接迅速便捷

从需要的地方开始阅读,则现需要 明确自己的需求,对于整体内筒有了大致的把握,并且对于该领域已经有些了解。若是一无所知,你也很难知道,哪里对于自己的需求是有实际帮助的。这样的方式对于解决实际问题很有帮助,因为它忽略了一些不相关的,对于自己的当前问题没有目前没有价值的内容。可以节省我们的精力,以用到更需要的地方去。

若是不知道如何把握整体内容,可见下段。

掌握概要把握整体内容再渐进式追求细节

从概要开始阅读,从目录可以了解大体构造,然后就可以开始正文的跳跃式阅读。不要逐字逐句的阅读,首先看副标题和粗体字强调的内容、图表、及其标题。阅读源代码时,首先要看一眼文件架结构和文件名,然后开始粗略读取文件内容,对于定义了的函数和类,以及出现频次较高的名称(函数,变量等等)要扫一眼。阅读代码的时候,切入口不同,其中一种就是使用调试器中的逐步执行功能。依照执行的顺序及调用的层次作为切入口去阅读。这实际上也是先大致掌握整个处理流,然后再深入到具体模块具体函数具体类中。

此法可能会有信息感觉很快就变淡的感觉,可参考下段。

逐章手抄减少漫无目的难以专注的终极方法

这也是最后的方法。当没有明确的目的,简单浏览内容过目即忘,这种学习状态下,只能“抄写”书籍,其他的不要想,直接做知识的搬运工吧——逐章手抄。

对于学习,适当的激励是极为有助的。关键是选择 可以获得成就感的合适的学习间隔

学习的态度

其实学习最关键的还是实际的应用。

学习即为了解决问题,有明确问题驱动下的学习是极其有效率的。

但是,问题的深度,难度,都将或多或少的影响着学习的进度和考验着人的意志。通常,事实是,大多数人无疾而终,因为所研究的问题,已经超出了自己的理解范围,太过于偏离自己的知识领域。

所以说,真正的学习,还应当是 循序渐进的,即使是有需求的学习,那也是需要起码的了解,是建立在已有知识基础之上的。

让一个毫无编程经验的人去研究游戏制作,虽然他的兴趣不小,激励不少,但是他还是必要经过一系列编程的学习。而且还需要学到一定的层次。不然,即使照着一本专业书籍从头做到尾,轮到自己真正去做自己的想法时,却还是什么也做不出来。

因为这些事并不是想要做就能做的,这中间还是要经过一个漫长的过度期。

有些知识,有些常识,看似和自己的想法相去甚远,但是还是得去学习吸收。因为这就是我们的知识领域扩张的一个必要过程。这样的结果,往往就是我们距离那个美好的梦想越来越近。这就像平地上的一滩水,随着一滴一滴的外来水滴的融入,我们不断扩张,也只有不断的融入,我们才有机会有一刻,实现抵达远方的那份期望。

我们实际上需要的还是脚踏实地。上面的三种思路,在我看来实际上是倒着来的。

逐章手抄->由概要到细节->按需索取

这就是一个不断细化的过程。

你可能感兴趣的:(语言)