gnu coreutils源码感悟——小说,代码,人生

gnu coreutils源码感悟——小说,代码,人生
好久没写博客了,今天写写。
前一段时间,读网络小说《官策》,读得天昏地暗,我心太急,恨不得马上读完。读得眼睛都睁不开了,小说太吸引人了。
今年,过年抱着试试的态度,买了个笔记本,上面装的win10,有个ubuntu的内置应用,上面可以写shell,太爽了。以前用那个cygwin时,总遇到到在windows中,是\n\r,而unix是\n的问题,现在没了这个问题。
昨天看了一段ruby,前面读ruby0.49的代码,读了一段,无功而返,连编译都不成功,读了一段正则表达式实现的代码,感觉和awk的差不多,也有yacc的程序,所以最近干脆,好好学习awk,和shell,在学习时,发现 shell的功能也越来越强了,其中涉及到数组的一些功能,我想,那些高级的玩意,还是学ruby,perl,python这种脚本语言吧。shell侧重在与系统交互方面,具体那种开发方面的细节,还是去学专门的语言。抱着这种态度,就看ruby,再想找些ruby的源码资料,后来想,gem是否有源码呢?于是又找到了_why先生的资料,在《ruby元编程》一书中,对camping很是器重,于是心想,读camping这个gem的源码吧,但在哪儿?先是安装
gem install camping
但也不安装到哪儿了,也不会用,于是上网,去找,找到了
rubygems.org,在网站上搜索,果然找到camping,我找了1.0版本,是.gem的文件,不管三七二十一,先解压,居然解压成功了,于是就读读。在windows下读代码,有些不好看,于是想,能否在ubuntu下读呢?于是又想到,win10--ubuntu两系统数据共享,网上也没资料,说要装smb,我不想装。心想,win10访问ubuntu,可能认不出来,但ubuntu可认识win10,于是
cd /
cd /mnt
看到c盘
哈哈哈,原来ubuntu下可以如此轻松的访问win10,太好了。
终于实现了win10---ubuntu的互访。
昨天读awk相关资料时,发现只有英语资料可以看了,再没有awk相关的书籍可以买到,连淘宝上都没有。那本影印的书,作者写的《sed&&awk》这本书我有了,而且我读awk的代码都读了一段,其它太浅的东西,我也不想要。linux的书籍买了近30本。于是去读《the awk programming》这书,是英语的。我不认识英语,但我认识其中的代码呀,哈哈哈,太爽了。
心想,自己不要太急,学好awk代码,其实有不少东西可以学,读正则表达式的代码,可以学会算法导论中,用自动机进行字串匹配的算法,在awk.y 中,可以把bison好好学会,而bison是基本lc的瘦包装,因此,编译原理要好好学,而且awk源码中,对C语言的使用,涉及要再复习C的用法 ,于是再学习C语言,再学习标准库。总之,把awk的源码,读完,就有很大的收获,看源码,不要急,慢慢看。而且,我甚至想,等我完全理解源码了,再看相关的书籍,看别人如何介绍awk,那不是太爽了。
我喜欢读小说,读小说时,我的阅读速度上来了。一天看几十本书都没问题。唯一的问题就是眼睛疼。但读小说,让我跟着主角多活了多少辈子呀。
有了超强的阅读能力后,再用这个方法去读代码。在读代码时,你总要会用代码吧。因为你若知道代码要解决的问题,再读代码时,简直是一目十行,一日千里。如果你不知代码要解决的问题,就只能一步步debug,再想出其中待解决的问题,那是事倍功半。
所以我现在回过头来,学习linux命令的用法了。

cat -n
cat -T
cat -s
很多选项,每个选项若能解决一个有趣的问题,那真是妙。
有一个文件,如file1,内容为"a\n\n\nb"
cat -s file1
变成
"a\n\nb"
当时,我在想,为何有两个回车呢?
tr -s '\n'
可以把"a\n\n\nb"变成"a\nb"

echo "aaaabb" | tr -s 'a-z'
会变成什么?
变成"ab"
神奇吧。
所以回过头来,先学习linux命令的用法,把用法理解了,再读代码,那就叫快了。
所以我现在读代码时,先理解软件,学会用软件,再慢慢读代码。
但这样读太慢了,周末在家,想找个开源的打字软件,找了几个python的,装上pygame,把软件调通,真爽。
但我还是比较喜欢ruby些,于是还是下功夫读ruby.但ruby原来 一直是看书学,现在看来,要找gem来读,通过读gem来学ruby.
哈哈,我想说,读代码时,要感觉快乐,这就是人生。把人生的每个点都当成终点来过,在每个点都感受到快乐,那人生就全是快乐的了。




猜你喜欢

转载自blog.csdn.net/woshiyilitongdouzi/article/details/80757521
GNU