大家好,我是赵文海,一名 Android 开发仔,坐标北京,目前工作刚满一年,在这里分享一下自己学习“深入浅出计算机组成原理”专栏的心得。

为什么要学计算机组成原理?

一直以来我心里都有一个念想,就是好好把计算机基础知识补一补,原因有两个。

第一,我不是计算机专业的,如果连基础知识都不熟悉,那怎么与科班出身的同事交流呢?虽然我目前的工作主要是在业务层进行开发,涉及基础知识的场景其实并不多,但是,既然我要在程序员这个行业长久地走下去,我觉得自己还是有必要补一下基础知识。

第二,虽然现在各种新框架、新技术层出不穷,但它们的根基其实还是那些基础知识。我们每个人的精力有限,整天追随这些“新”的东西,在我看来并不是一个很明智的选择。相反,正所谓“磨刀不误砍柴工”,如果我把先基础知识掌握好,那学习和了解那些应用层的框架应该会更容易一点。

所以,我给自己设定了两个学习方向,一是深入学习移动端开发相关技术,比如,学习 Android 系统知识、深入了解一些框架、接触 Flutter 这类跨平台技术;二是学习计算机基础知识,然后再随着工作慢慢深入去学习移动端开发技术。

正好那时候极客时间出了很多基础课程,比如王争老师的“数据结构与算法之美”、刘超老师的“趣谈网络协议”等等。我是先从数据结构与算法开始学的,后面又学了一些网络协议的知识,然后才开始学习徐文浩老师的“深入浅出计算机组成原理”。

我记得徐老师在开篇词里写过这么一段话:

正所谓“练拳不练功,到老一场空”。如果越早去弄清楚计算机的底层原理,在你的知识体系中储备这些知识,也就意味着你有越长的时间来收获学习的“利息”。虽然一开始可能不起眼,但是随着时间带来的复利效应,你的长线投资项目,就能让你在成长的过程中越走越快。

这段话和我的想法不谋而合,也给了我极大的鼓舞,我学习基础知识的决心也更加坚定了。

我是怎么学习专栏的?

刚开始看的时候,专栏已经更新了二十多讲,但我没有想要赶快跟上老师的步伐,就希望自己每天都能坚持看一讲。

我一般都是在晚上下班回家后看专栏,也有时候是早上到公司后,因为住的地方离公司比较近,还有时候一个人出去坐地铁也会拿出来看一会儿。

最开始由于我过于自信了,我想着只是把文章看了一遍就可以了。后来过了一周,我发现看完的东西,很快就没有印象了。我当时就想,这样可不行啊!不知道你是不是经常有这种感受,费很大劲搞懂的东西,结果因为只看了一遍,没有及时复习,很快就又忘记了。于是,后面每篇文章,我至少都会看两遍。第一遍认真阅读思考,第二遍、第三遍作为复习巩固。

另外,学习这个专栏时我没有做笔记,因为我觉得老师的文章不长,而且言语足够简练,没有必要自己再提炼一次。毕竟我每天都会打开极客时间,如果碰到哪里想不起来了,就直接再看一遍文章就好了,也花不了多长时间。

当然,记不记笔记是个人喜好,如果时间充裕,你也可以选择通过做笔记来加深印象。极客时间的划线笔记功能也是极好的,看到有问题或者非常好的地方,直接记录下来,方便以后查阅、学习。

就这样,保持一天一节的速度,慢慢我就赶上了老师更新的步伐,后面的文章基本就是更新当天就看完。

虽然进度跟上了,但是老师文章后面附的书籍我目前并没有去读。作为一个非科班出身的工作党,平时时间并不宽裕,掌握老师每一节的主要知识,已经挺不容易了。

这里特别说一下,徐老师每篇文章下的推荐阅读,是我个人最喜欢这个专栏的地方。徐老师每次都会在文章结尾列出相关书籍的对应章节、相关的博客或论文,这为我后面深入学习相关知识提供了很大的便利。

因此,关于这一块内容我是这么打算的。我准备学完第一遍之后,仔细去读一读老师推荐的书籍。这样有了第一遍的铺垫,读起老师推荐的书和论文,不至于那么困难和恐惧。读书的时候还可以结合书中内容再复习一遍专栏,到时候肯定会有新的收获。毕竟,基础知识的学习是一个长期积累、慢慢参悟、螺旋上升的过程,我已经做好了打持久战的准备。

学习专栏有什么收获?

徐老师的文章长度适中、图文并茂、言简意赅。在解释一些名词和概念的时候,徐老师经常拿生活中我们熟悉的事物来举例。我觉得这一点非常好。

比如,他把电路组装看成“搭乐高积木”、把动态链接比喻成程序内部的“共享单车”、把总线比喻成计算机里的“高速公路”,这很容易让我这种非科班的同学,对陌生概念迅速建立起一个初步印象。当然,能把概念解释地如此清晰和“接地气”,也反映了老师的深厚功底。

通过专栏的学习,我对计算机的 CPU、内存、I/O 设备以及它们之间的通信有了初步的了解。

另外,像 GPU、TPU 相关的章节也让我开拓了眼界,比如 GPU 那一节老师就讲到了计算机图形渲染的流程,这些知识是我之前从未接触过的。

同时,专栏还有很多很实用的章节,比如讲 CPU 的高速缓存时,讲到了 Java 中的 volatile 关键字的作用,这些都可以直接运用到实际的工作或面试中。

不过,除了计算机组成原理的知识外,我还有其他的收获,在我看来这些收获甚至比那些知识还重要。

首先,就是克服了对于基础知识的恐惧。

我之前觉得基础知识是晦涩难懂的,像计算机组成原理、网络协议、操作系统,这些课听起来就觉得很难。开始学习之前,心里总是怕自己理解不了或者坚持不下来,但是通过学习专栏,我发现它们并没有想象中那么可怕,很多技术灵感其实就是源于我们的生活实践。先去学,然后慢慢就能发现其中有趣的地方。

比如,CPU 分支预测就和我们天气预测有相似之处。文章里穿插的历史知识也让我意识到,这些知识虽然看似高深,但也是无数前辈经历很长时间、很多次失败才慢慢积累下来的,学习这些知识,就是站在巨人的肩膀上,体会他们思考和实践的过程。

还有就是,我意识到了持续学习的重要性。

徐老师在第 2 讲时写过,“我工作之后一直在持续学习,在这个过程中,我发现最有效的方法,不是短时间冲刺,而是有节奏的坚持。”我对这句话真是深有感触,所以一直记到现在,估计你也是吧?

总结

通过专栏的学习,我确实收获了很多,真的非常感谢徐文浩老师的付出,也感谢极客时间推出了这么多实用的基础课程。

其实,尽管毕业之后工作才半年左右,但是我的心里其实挺焦虑的,主要是担心自己在如此快速的技术变革中,跟不上变化,慢慢被淘汰。在这个过程中,我也思考了很多。通过学习专栏,我的焦虑情绪也化解了很多。在这里我也想说说我对于焦虑的看法。

我觉得人之所以会感到焦虑,是因为有上进心,说白了就是觉得自己不够好。这其实是一件好事,正是因为觉得自己不够好,我们才能产生变得更好的想法,进而找到变得更好的方法,所以我们要正确看待焦虑这种情绪。而缓解焦虑的方式很简单,就是行动。担心自己长胖,那就去锻炼;担心自己被淘汰,那就去学习。

我特别喜欢胡适说的一句话:“怕什么真理无穷,进一寸有一寸的欢喜”。

用这句话与各位共勉吧,希望我们都能抱着长线投资的心态,坚持下去,和时间做朋友,不要急躁。虽然学完这些基础知识,老板也看不到,短时间内也不会加薪升职,但我相信,它们会在未来的某个时间回馈你,让你知道现在的决定是正确的,现在的付出是值得的!

好了,我想要分享的内容就是这些,不知道你学习这个专栏的过程是怎样的呢?有没有什么独特的学习方法和心路历程呢?欢迎你写在留言区,我们一起分享,相互鼓励,共同进步!