Like an Unix

注:写于2010-03-14

因为工作的关系,这几个月来,一直在用unix做开发。刚开始的时候,这对我来说是件挺困难的事情。作为一个前windows程序员,工作中如果没有像VS那样好用的工具,没有丰富的菜单可点,没有便捷的快捷键可按,那工作便是一个承受痛苦和煎熬的过程,毫无乐趣可言。一直以来,Windows程序员的思维方式是,任何软件的开发,都是一项主题严肃,规模宏大的工作,开发一个软件,和建造一个大教堂类似。程序员需要不仅需要有虔诚肃穆的心态,同时还需要有万丈高楼平地起,不依靠他人来构建一砖一瓦的决心。因此,他们在工作中事无巨细,任何代码都亲力亲为;喜欢用重量级的编程语言,能用C++绝不用python。在他们看来,python这些动态语言的语法太轻佻了,某种程度上会影响他们肃穆端正,追求宏大叙事的那种情绪。

而unix下的软件开发,则大异其趣。面对同样的需求,和windows下决心采用重量级语言,从头做起的思维方式不同,unix程序员首先想到的,不是启动他的Visual studio然后创建一个工程,而是先启动浏览器,google一把,看目前是否有比较好的开源方案可用,如果有这样的方案,那么先把源码down下来,稍稍修改一下,编译一把,即可向用户交差;如果没有对应的解决方案,那么就退而求其次,考虑为解决这个需求而需要写的程序,是否有好的开源模块可用直接拿来用?以这样的方法开发软件,不像是建造一个大教堂,更像是首先在集市上采购零件,然后回家自己焊接安装,拼凑出自己所要东西。

了解到这一点后才明白,原来我一直是怀着一颗windows的心来做unix下的开发,难怪干起活来非常别扭,十分费劲。生活的经验告诉我们,如果你全身心地投入去做一件事情,但是却进展缓慢,做得辛苦,那肯定是你的思维方式出了问题;那些能够顺利做好某些事情的人,最主要的一点,在于他们拥有正确处理这些事情的思维方式。因此,要玩转Unix,首先必须去了解unix大牛的思维方式。

刚好同事老罗有一本TAOUP,于是便借来看了一下。这是一本很有争议的书。该书的中文译者把这本书定位为“课外读物”,并且在译序中牛皮哄哄地告诉大家:一开始他被这本书的一些“合他胃口的”言论忽悠了,于是下决心翻译这本书,没想到译到中途,发现原作者ESR是个美国老愤青,很多言论不敢与之苟同,于是捏着鼻子把它译完了。翻译完之后,为免晚节不保,落下骂名,特地在译序中把这个情况向大家说明,至于会不会影响销量就不管啦。

虽然有这么一篇译序在前,但是这仍然不妨碍我工作时间啥事不干,呆在自己座位上把这本书看了几个星期。看了之后,对ESR的观点深表赞同,并不觉得这家伙是个美国老愤青,而是觉得ESR在以一种历史学家的眼光,站在几十年前和几十年后的角度来看待unix。他从几十年来,unix所经历过的的风雨和浮沉中,抽象提取出unix软件开发的原则并加以论述,同时指出unix文化和unix软件才是IT行业的大势所趋。个人觉得,这是一本值得每个程序员好好学习的好书,而不像译者所说的,只是本“课外读物”。那位中文译者,或者说那些诟病TAOCP的人,他们看unix,是从手头上的项目出发,思考的是软件实作,思考问题的时间粒度以星期,以月为单位,于是自然看到了现阶段unix软件以及unix社区开发方法的不合理之处,认为TAOUP的一些观点是偏激的。当然,本书的翻译质量上佳,考虑到译者是捏着鼻子译完的,为此不得不佩服这家伙的翻译水平,以及承受“痛苦”的耐力。

从这本书中,可以很好地看出unix大牛们的思维方式。从技术层面来看,这些思维方式,比如kiss原则,轻松编程,拿不准就穷举等,现在都已经得到了包括windows程序员在内的各领域程序员的拥护,在软件开发中被奉为圭皋。不过unix的魅力并不仅限于此,包含在unix中的那些的思想,具有某种启迪智慧,揭示未来的力量。

从unix的历史可以看出,unix并不是某个规划严谨的商业项目的生产品,而是源自于AT&T实验室科学家,在完全自由状态下的独立创造,然后被一群深受上世纪60年代嬉皮士文化影响的程序员发扬光大。和商业软件不同的是,在开发unix极其相关软件时,注重的不是当下用户的需求,更多地是被程序员内心创造美好事物的信念所驱动,致力于打造好用,方便的工具,而不是考虑项目成本和进度的问题。从unix到GNU到linux,分析unix的整个发展历史,我们可以看到,出于纯正目的发展出来的unix衍生系统或者unix软件,大多数都取得了成功,而试图从商业层面来控制unix的源码和发行,无一例外地失败了。

在软件领域产生的开源运动和unix文化,是整个商业化世界的另类。它们没有严谨的运作规则,没有明确的商业模式,但是却创造出了可以和任何商业软件媲美的优秀软件,在实际的生产系统中创造着实实在在的价值。同时,随着形势发展我们可以看到,以unix为首的开源软件在各个领域都向windows等专有软件发起了有力的挑战。这就不禁让人联想:商业化生产和运作模式,它是人类社会运行的终极手段,抑或只是一个过渡阶段,以后将被更适合符合人性的生产模式所取代?在其他行业,目前还看不到这一点,但是在飞速发展的IT业界,似乎渐渐有了这种趋势。

曾经有一位大牛描述过他心目中的理想生活:N年之后,人类生产的组织方式不再以公司生产的方式进行(这已经被证明是效率低下,有违人性的,规模越大的公司越是如此),而是以产品为中心进行组织,在产品生产的各个环节工作的人们,根据具体贡献的大小来分配收入。同时由于互联网的发展,信息不对称的情况将被消除,使得收入分配的透明性成为可能。这种生活的好处是,人们可以以远比现在公司化模式更松散的方式结合在一起,从事生产,同时具有更高的效率。到那个时候,人们应该有更多的,选择如何生活的自由吧。

Bob Dylan有一首歌叫like a rolling stone,描述了韶华的易逝,岁月的无常,个人认为这个比喻挺传神的。人类社会的发展是否也会like an unix,从生命最美好的冲动出发,在岁月的更替中经受住商业大潮的洗礼和实用主义的考验,慢慢强大,最终到达美好的彼岸?当然,在每个行业看起来都像是一场恶搞的中国,貌似这个可能性不大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。