受unix思想的一点感悟

    最近工作不忙,所以很多时间都是在网上看些相关的资料和逛逛论坛,然后看到一本书《开源世界旅行手册》,

中间有一段介绍unix发展历程,也提到了一个人,王垠,此人以前曾非常出名,我在大学时候也看过他两篇文章,

一篇是从清华博士的退学书,一篇是《完全使用GNU/linux工作》,虽然当时我只是知道一点点linux,但前一篇

文章给我留下了深刻印象,看得人热血沸腾,让我觉得此人不管水平如何,但至少能不顾世俗的束缚,敢想敢做。

 当年他从清华退学后就去了美国,也不知道发展如何,现在我也做了一名软件工程师,所以我就到网上搜了下他的

近况,发现他在新浪上还有blog,地址是http://blog.sina.com.cn/yinwang0,我就看了他写的blog,从字里行间,

觉得确实是此人,张狂的气息还是没有改变,只是略微收敛了一些。

     在blog中,有篇文章叫Unix的缺陷,http://blog.sina.com.cn/s/blog_5d90e82f01014k5j.html,从这篇文章中,

我才明白了,什么是unix的三个基本思想:1.程序只做一件事情;2.程序之间能协同工作;3,程序处理文本流,

因为它是一个通用的接口。非常简单的三个理论,也容易理解。却让我突然领悟了很多东西,第一点,程序只做

一件事情,这里的程序定义类似c语言中的函数,就是说一个函数不要让它去做太多的事情,以前我挺反感的就是

看到那些java,c++的代码就头疼,一个函数几百行,一个系统调用的API也是继承了n多层。我想自己更多地还是

喜欢c语言的简洁。第二点,程序之间协同工作,也就是函数调用的概念,你可以设计好接口,让一个很长的函数,

里面分成不同的事情,然后去调用,这样可以让代码简练易懂很多。第三点,意思应该差不多是说,unix系统及其

程序之间进行数据传递的都是文本流,文本流归根到底就是字符串,这点也是王垠,提出批判的入口,我仔细看了

那篇博文,说得是有道理,但是我没有那水平,所以对unix的设计,我还是非常崇拜的。那篇文章也让我明白了

shell脚本解释器的大致工作原理,受益匪浅。

     收到上面的思想感悟,我重新看了下linux驱动方面的代码,觉得豁然开朗,驱动中的分层,分块的思路,不正符合

unix思想的第一点,让程序只做一件事情么,另外设计好了接口,这样上层就不用在关心具体底层是如何实现的,符合

面向对象的思想,unix第二条,程序协同工作。自此,我终于有些明白,为什么代码要如此设计的了。

     非常感谢王垠,希望他能在美国实现他的梦想,我也能努力早日成为一名优秀的软件工程师。

你可能感兴趣的:(工作,linux,unix,shell,Blog,语言)