看过很多关于Unix/Linux和Window之争的文章。即使是我这么偏爱Unix/Linux的人,都会觉得那些文章中的绝大多数太过偏激,要么把Windows贬得一无是处,要么把Windows美化得白璧无瑕。
我的工作不是windows编程,我也很不喜欢Windows编程,可我的日常工作生活仍然离不开Windows。即使像我这样的程序员,让我在Linux/Unix下配置一台打印机,或者安装一个声卡,也是让我头疼的事情。Windows之所以如此流行,决不是偶然,有它内在的深刻原因。Unix/Linux的设计很优美,实现也很优秀,但是为什么在某些领域(尤其是桌面系统)干不过Windows?Unix/Linux社区的人对自己的技术水平一向非常自负,为什么十多年过去了还没能取Windows而代之?这些问题我回答不了,但我的直觉和唯物辩证法都告诉我,任何一个事物都有对立统一的两个方面,Windows也有它的优点,Unix/Linux也有它不尽人意的地方。
最近看《Joel on Software》专栏,发现这个专栏作者发布在2003年年底的一篇文,把这个问题讲得一清二楚,态度公允,分析深入,值得一读,对系统设计来说也很有指导意义。为了给自己加深印象,节选其中一部分翻译,做笔记。
Unix和Windows从功能上看越来越相似,剩下的不同仅仅是文化差异。举个例子:我们都要吃东西。大洋彼岸的人们用筷子,吃生鱼片就米饭;但我们用手拿着面包,就着牛肉吃。文化差异并不意味着美国人消化不了生鱼片,或者日本人消化不了麦当劳的汉堡;实际上美国很多人吃生鱼片,日本也有很多人吃汉堡包。但文化差异确实意味着,一个美国人第一次踏上东京的土地时,总会觉得这地方怪里怪气。尽管哲学上讲,所有的人本质相同,都会恋爱工作唱歌死亡,美国人和日本人仍然很难适应对方国家的厕所布局。
Unix和Windows程序员的文化差异是什么呢?我们暂且不细说这里面的细枝末节,最重要的一点差异是:Unix文化重视那些对程序员有用的代码,Windows文化重视那些对非程序员有用的代码。这么说有点简化,但最大的区别的确就是这一点:我们是为其他程序员设计程序,还是为最终用户设计程序?此外的任何问题都是对这个问题的注脚。
20世纪60年代末,Unix刚刚诞生,Unix社区的核心文化正在形成,当时的计算机没有“最终用户”。那时的计算机,以及计算机的CPU时间,都很昂贵,都仅仅用在很专业的学术领域。“学习计算机”就意味着“学习编程”,而不是像现在这样,“学习使用应用软件”也是“学习计算机”的一种方式。作为现代的最终用户,你可能根本不会编程,而仍然能用计算机做许多事情。但上世纪60年代末,尤其对Unix社区来说,“用计算机”就是“编程”。Windows被制作出来的时候,唯一的目标是出售尽可能多的拷贝,以赢得更多利润。“每家的每张桌子上都有一台安装了Windows的计算机”是Windows开发小组的理想,这一理想为windows设定了核心价值观:对最终用户来说更容易使用,但显然,绝大多数最终用户不是程序员。Windows开发过程并没有把“方便其他程序员”作为目标。
例如,Unix的一个重要原则就是“清晰区分策略和机制”。该原则源于X系统的设计。(虎注:X为Unix系统上的图形用户界面的基础设施,其设计者明确提出,X实现的“是机制,不是策略”----X是一个通用图形引擎,用户界面风格的选择,应该是toolkit以及系统中另外一些级别上的决策。策略和机制都会有演进,但是他们变化的速度不同:策略的变化一般比较快,基本机制的变化则比较慢。图形用户界面的风格经常变动,但是用于显示用户界面的基本光栅操作----比如在屏幕上画点/画线----则没有太多变动余地。)“清晰区分策略和机制”这一Unix文化中的基本原则导致了Unix上图形用户界面风格的多样性。Unix世界里从未就用户界面工作方式的全部细节达成一致,并且他们认为这没什么不对的,Unix文化并且还尊重这种多样性。但是对一般的最终用户来说,在两个应用程序中,应该能用相同的操作(点击相同的按钮或者菜单/快捷键)达到相同的目的,这样的系统上的应用程序才是易学易用的。也正是由于上述区别,虽然Unix开发者为给Unix做一个漂亮的用户界面已经努力了二十年,我们还是看到最大的Linux厂商的CEO告诉大家:“家庭用户还是用windows好了”。
Linux没准永远都不会成为一个好的桌面操作系统,因为Unix文化所看重的那些东西本身,就妨碍了Linux成为一个面向最终用户的桌面系统。OS/X就是一个例证:Apple终于创造出了面向最终用户的Unix,唯一的原因是,Apple的工程师和领导者都坚定地以最终用户为核心,而完全放弃了Unix文化中最基本的“以程序员为核心”的理念。他们甚至把Unix的核心目录改名了----“bin”和”lib”变成了对一般用户来说更通俗易懂的”application”和”library”。
lb_bn 于 2007-05-25 10:24:03发表:
ubuntu也在加油。。