观千剑而后识器——读源码的感受

观千剑而后识器——读源码的感受
总想在网上买本讲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之类命令的源码时,对那个最长公共子串的算法也要懂。总之,读代码时,若对算法理解清楚了,你会发现代码写得真美。真是象珍珠一样。字字珠矶。
第十、少上网。发现看代码时,可以听听音乐,但最好不上网。而且在网上也基本不能解决你的问题。既然选择了读源码,就是立志成为一流的人物,试想,如果网上能轻易找到资料,那一流人物岂不满天下了。
今天先写到这里。
 

猜你喜欢

转载自blog.csdn.net/woshiyilitongdouzi/article/details/85087914
今日推荐