在下是一个码农,也号称是一个老湿,平生阅码农无数(吹牛的 ^-^)。经由大量的案例,我能够理解了为什么很多码农学了很多年Linux,还是感觉没有掌握要领,仍然内心崩溃,最终对Linux吐血而亡,正所谓:人世间最大的痛苦,莫过于,码农落花有意,而Linux流水无情....... 在这个2018农历七夕之夜,我决定写一点什么,来缅怀很多童鞋在Linux世界里逝去的青春,抚慰你内心的失落、彷徨、迷茫乃至绝望。 很多为Linux吐血而亡的程序员都犯了一个通病,那就是一开始就陷入无穷无尽的细节,比如一开始就陷入源代码情景分析。情景分析这样的书,无疑是好书,但是你把《新华字典》从第一个单词,背到最后一个单词,你仍然写不出一篇作文。 若言琴上有琴声,放在匣中何不鸣? 若言声在指头上,何不于君指上听? 《琴诗》 苏轼 我建议的学习方法是,反复迭代螺旋上升法。如下图: 下面我们来论述学习Linux内核的各个阶段
接下来怎么办?不停地循环!生命不息,循环不止!!两情若是久长时,又岂在朝朝暮暮。 你千万不要倒着学,先跑进去细节,跑进去一行行,总共2000万行地撸代码,这样量太大,整体性太弱,各个组件的关联很难建立。且中间无法用前期的成就感,来催生后期学习的动力,只会强撸灰飞烟灭。你不从外围看Linux,横着看,竖着看,你是看不到Linux的真面目的。 横看成岭侧成峰,远近高低各不同。 不识庐山真面目,只缘身在此山中。 据我个人所知,也有极少量的人,一开始就以情景分析的方法,逐行解释代码,最后也学有所成,但是这样的人,都具有非凡的毅力,不是一般人可以去模仿的。 一般的人,类似我这样的懒惰分子,需要用整体带动部分的方法。正如我们看一个别人的.c文件,你不可能傻到从第一行读到最后一行。你肯定是先搞清楚这个.c的整体功能,对外接口API,再深入到static的内部函数,由外及内,继而由内及外。 下面我们用一个球来比如Linux,最外圈的球是整体的Linux,球内的小球是Linux的某个组件。最开始你这样看Linux: 接下来你把其中的某些子系统放大,整个Linux这个气球也随着变大: 随着掌握的越多,这个球越来越大: 然后,某个领域成为你的专业领域(比如你文件系统牛逼,比如你内存优化牛逼),这个球里面这个专业领域就凸起了: 我不是大神,我只是屌丝,但是我爱你们! 愿你的球球越来越大! 愿你的球球越来越大!! 愿你的球球越来越大!!! 你的球有多大,你的世界就有多大。 (打赏的童鞋请在打赏的时候留言让在下知道是谁并感恩) 查看"Linux阅码场"精华技术文章请移步: 扫描二维码关注"Linux阅码场" |
|