宋宝华: 迭代螺旋法——关于Linux学习方法的血泪建议

版权声明:本文为博主原创文章,未经博主同意不得转载。

https://blog.csdn.net/juS3Ve/article/details/81784703

640?wx_fmt=jpeg

在下是一个码农,也号称是一个老湿,平生阅码农无数(吹牛的 ^-^)。

经由大量的案例,我能够理解了为什么非常多码农学了非常多年Linux,还是感觉没有掌握要领,仍然内心崩溃。终于对Linux吐血而亡,正所谓:人世间最大的痛苦。莫过于。码农落花有意,而Linux流水无情.......


在这个2018农历七夕之夜,我决定写一点什么。来缅怀非常多童鞋在Linux世界里逝去的青春,抚慰你内心的失落、彷徨、迷茫乃至绝望。


非常多为Linux吐血而亡的程序猿都犯了一个通病,那就是一開始就陷入无穷无尽的细节,比方一開始就陷入源码情景分析。情景分析这种书。无疑是好书,可是你把《新华字典》从第一个单词。背到最后一个单词。你仍然写不出一篇作文。




若言琴上有琴声,放在匣中何不鸣?

若言声在指头上,何不于君指上听?


《琴诗》

苏轼


我建议的学习方法是。重复迭代螺旋上升法。例如以下图:


640?wx_fmt=png


以下我们来论述学习Linux内核的各个阶段

  1. 第一阶段: 先形成总体轮廓,比方对Linux的进程、内存、I/O、驱动模型有一些主要的认识,開始写一些简单的内核模块,比方hello-world模块、globalmem、globalfifo这种字符驱动。你一定要动手。这个时候你能够看的书是《Linux内核设计与实现》。还有驱动的书。

  2. 第二阶段:从事详细的工作,在某个子系统(不管是进程、内存、IO还是驱动)从事工作,加新的功能,修bug。发patch,加深对知识的理解。这阶段你假设有兴趣。也有耐心。能够读《深入理解Linux内核》、《深入Linux内核架构》这种书。只是懒得看也没有关系。由于你工作的时候,会自然而然地自己进行代码分析。

  3. 第三阶段(回归第一阶段):你已经工作了一段时间,写了一些代码,修复了一些bug。提交了一些patch,然后你又一次回来迭代总体的知识框架,搞清楚各个子系统内在的联系。这阶段你假设有兴趣能够读《深入理解Linux内核》、《深入Linux内核架构》这种书。只是懒得看也没有关系,由于你的工作让你自己有了分析的能力。

  4. 第四阶段(回归第二阶段):从事详细的工作,在某个子系统(不管是进程、内存、IO还是驱动)从事工作,加新的功能。修bug。发patch,加深对知识的理解。

    这阶段你假设有兴趣能够读《深入理解Linux内核》、《深入Linux内核架构》这种书。只是懒得看也没有关系,由于你的深入的工作,会让你自己具备了理清脉络和深入细节的能力。


接下来怎么办?不停地循环!

生命不息。循环不止!!两情若是久长时,又岂在朝朝暮暮。


你千万不要倒着学,先跑进去细节,跑进去一行行,总共2000万行地撸代码,这样量太大。总体性太弱,各个组件的关联非常难建立。且中间无法用前期的成就感,来催生后期学习的动力。仅仅会强撸灰飞烟灭

你不从外围看Linux,横着看,竖着看,你是看不到Linux的真面目的。


横看成岭側成峰。远近高低各不同。

不识庐山真面目。仅仅缘身在此山中。

640?</p><p>wx_fmt=png


据我个人所知,也有极少量的人,一開始就以情景分析的方法。逐行解释代码,最后也学有所成。可是这种人,都具有非凡的毅力,不是一般人能够去模仿的。


一般的人,相似我这种懒惰分子,须要用总体带动部分的方法。

正如我们看一个别人的.c文件。你不可能傻到从第一行读到最后一行

你肯定是先搞清楚这个.c的总体功能,对外接口API。再深入到static的内部函数,由外及内,继而由内及外。


以下我们用一个球来比方Linux,最外圈的球是总体的Linux。球内的小球是Linux的某个组件。最開始你这样看Linux:

640?</p><p>wx_fmt=png

接下来你把当中的某些子系统放大,整个Linux这个气球也随着变大:

640?wx_fmt=png

随着掌握的越多,这个球越来越大:

640?wx_fmt=png


然后,某个领域成为你的专业领域(比方你文件系统牛逼,比方你内存优化牛逼),这个球里面这个专业领域就凸起了:

640?wx_fmt=png


我不是大神。我仅仅是屌丝,可是我爱你们!


愿你的球球越来越大!

愿你的球球越来越大!!

愿你的球球越来越大!!!

你的球有多大,你的世界就有多大。


(打赏的童鞋请在打赏的时候留言让在下知道是谁并感恩)

640?wx_fmt=png

查看"Linux阅码场"精华技术文章请移步:

Linux阅码场精华文章汇总


扫描二维码关注"Linux阅码场" 

640?</p><p>wx_fmt=png

posted on 2018-11-02 14:34  ljbguanli  阅读(335)  评论(0编辑  收藏  举报