觀千劍而後識器——讀源碼的感受

觀千劍而後識器——讀源碼的感受
總想在網上買本講gnu coreutils源碼的書,但沒有。類似於linux,gcc,spark之類的源碼太複雜,我吃不消,爲此,只能自己慢慢啃。
如果說沒有感受,那是不可能的。你一個人在黑暗中爬,肯定有害怕的時候。
我現在有一些小的心得。
第一、買一款新的筆記本。如安裝好win10正版系統的筆記本,因爲win10的微軟商店裏有ubuntu linux的應用。在ubuntu中可以任意折騰。我學rails時,就下一個,玩廢了,就重新下一個,docker我不會玩,感覺不要花太多時間在安裝系統,配置上。
第二、用vim+ctags之類工具輔助讀,另外make,gcc肯定是要安裝的。
我的想法時,儘量安裝低版本的gcc,因爲我讀coreutils4.5.1是低版本的,然後進入scr目錄,試着修改某個.c文件後,
sudo make
把全部代碼編譯一次,再在src下執行命令。
這種效果是最好的,我的想法是,盡情的修改,把代碼弄亂了,就重新解壓一份。
第三、讀某個命令的代碼之前,儘量掌握命令的用法。如果命令你都不會用,C的語法不熟悉,再加上對一些系統調用沒用過,涉及到的算法又不懂,那就真如看天書了。
一般,當知道某個命令的用法後,先把文件從頭到頭快速的過一遍,你總能從中找到熟悉的用法 ,發現就,以此爲根據地,再慢慢展開。
第四、快速讀代碼
第五、讀代碼時,如同陶潛說的,不求甚解。不要全部搞懂。能理解一部分也是勝利。第六、重複讀代碼。同一段代碼,每天都讀一遍。代碼讀100遍,其義自現。
第七、在讀代碼時,若遇到不理解的用法,就寫測試代碼。如我看到作者寫代碼時,把函數名和括號分隔開,覺得奇怪,於是自己寫測試代碼,果然能通過。如比給數組傳值時,
int a[10]={1,2,3,};
看到沒,最後一個逗號是多餘的,這種代碼也能通過。反正自己寫測試代碼,驗證自己的想法。
第八、平時多寫代碼。代碼要多寫才熟悉。我只喜歡看,不喜歡動手,後來發現這不好。事倍功半。如果寫得多,讀代碼也就快了。換句話說,大師們的代碼我們寫不出來,連讀都讀不懂嗎?不可能的。
第九、多讀算法、數據結構、編譯器相關書。我原來看awk,發現自己心急了,對nfa實現正則表達式的算法不懂,代碼根本看不懂的。讀ruby0.45時,自己對編譯原理沒有深刻的理解,如何讀?沒辦法的。讀diff之類命令的源碼時,對那個最長公共子串的算法也要懂。總之,讀代碼時,若對算法理解清楚了,你會發現代碼寫得真美。真是象珍珠一樣。字字珠磯。
第十、少上網。發現看代碼時,可以聽聽音樂,但最好不上網。而且在網上也基本不能解決你的問題。既然選擇了讀源碼,就是立志成爲一流的人物,試想,如果網上能輕易找到資料,那一流人物豈不滿天下了。
今天先寫到這裏。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章