當前位置:
首頁 > 知識 > 迭代螺旋法——關於Linux學習方法的血淚建議

迭代螺旋法——關於Linux學習方法的血淚建議


來自:Linux閱碼場(微信號:LinuxDev)



在下是一個碼農,也號稱是一個老濕,平生閱碼農無數(吹牛的 ^-^)。經由大量的案例,我能夠理解了為什麼很多碼農學了很多年Linux,還是感覺沒有掌握要領,仍然內心崩潰,最終對Linux吐血而亡,正所謂:人世間最大的痛苦,莫過於,碼農落花有意,而Linux流水無情.......




我決定寫一點什麼,來緬懷很多童鞋在Linux世界裡逝去的青春,撫慰你內心的失落、彷徨、迷茫乃至絕望。




很多為Linux吐血而亡的程序員都犯了一個通病,那就是一開始就陷入無窮無盡的細節,比如一開始就陷入源代碼情景分析。情景分析這樣的書,無疑是好書,

但是你把《新華字典》從第一個單詞,背到最後一個單詞,你仍然寫不出一篇作文。








若言琴上有琴聲,放在匣中何不鳴?


若言聲在指頭上,何不於君指上聽?




《琴詩》


蘇軾




我建議的學習方法是,反覆迭代螺旋上升法。如下圖:







下面我們來論述學習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的真面目的。




橫看成嶺側成峰,遠近高低各不同。


不識廬山真面目,只緣身在此山中。




據我個人所知,也有極少量的人,一開始就以情景分析的方法,逐行解釋代碼,最後也學有所成,但是這樣的人,都具有非凡的毅力,不是一般人可以去模仿的。




一般的人,類似我這樣的懶惰分子,需要用整體帶動部分的方法。

正如我們看一個別人的.c文件,你不可能傻到從第一行讀到最後一行

。你肯定是先搞清楚這個.c的整體功能,對外介面API,再深入到static的內部函數,由外及內,繼而由內及外。




下面我們用一個球來比如Linux,最外圈的球是整體的Linux,球內的小球是Linux的某個組件。最開始你這樣看Linux:



接下來你把其中的某些子系統放大,整個Linux這個氣球也隨著變大:



隨著掌握的越多,這個球越來越大:





然後,某個領域成為你的專業領域(比如你文件系統牛逼,比如你內存優化牛逼),這個球裡面這個專業領域就凸起了:





我不是大神,我只是屌絲,但是我愛你們!




願你的球球越來越大!


願你的球球越來越大!!


願你的球球越來越大!!!


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




●編號589,輸入編號直達本文



●輸入m獲取文章

目錄

推薦↓↓↓

 



運維


更多推薦

18個技術類微信公眾號


涵蓋:程序人生、演算法與數據結構、黑客技術與網路安全、大數據技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Linux學習 的精彩文章:

Linux系統管理員的Bash指南,11條Bash實踐經驗!

TAG:Linux學習 |