Chinaunix首页 | 论坛 | 博客
  • 博客访问: 335238
  • 博文数量: 79
  • 博客积分: 2466
  • 博客等级: 大尉
  • 技术积分: 880
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-07 16:47
文章分类

全部博文(79)

文章存档

2014年(3)

2012年(7)

2011年(14)

2010年(2)

2009年(2)

2008年(2)

2007年(18)

2006年(31)

分类:

2007-05-24 09:21:19

Biculturalism 

By Joel Spolsky

Sunday, December 14, 2003 

原文地址:/articles/Biculturalism.html 

看过很多关于Unix/LinuxWindow之争的文章。即使是我这么偏爱Unix/Linux的人,都会觉得那些文章中的绝大多数太过偏激,要么把Windows贬得一无是处,要么把Windows美化得白璧无瑕。 

我的工作不是windows编程,我也很不喜欢Windows编程,可我的日常工作生活仍然离不开Windows。即使像我这样的程序员,让我在Linux/Unix下配置一台打印机,或者安装一个声卡,也是让我头疼的事情。Windows之所以如此流行,决不是偶然,有它内在的深刻原因。Unix/Linux的设计很优美,实现也很优秀,但是为什么在某些领域(尤其是桌面系统)干不过WindowsUnix/Linux社区的人对自己的技术水平一向非常自负,为什么十多年过去了还没能Windows而代之?这些问题我回答不了,但我的直觉和唯物辩证法都告诉我,任何一个事物都有对立统一的两个方面,Windows也有它的优点,Unix/Linux也有它不尽人意的地方。 

最近看《Joel on Software》专栏,发现这个专栏作者发布在2003年年底的一篇文,把这个问题讲得一清二楚,态度公允,分析深入,值得一读,对系统设计来说也很有指导意义。为了给自己加深印象,节选其中一部分翻译,做笔记。 

------------------开始啦----------------- 

UnixWindows从功能上看越来越相似,剩下的不同仅仅是文化差异。举个例子:我们都要吃东西。大洋彼岸的人们用筷子,吃生鱼片就米饭;但我们用手拿着面包,就着牛肉吃。文化差异并不意味着美国人消化不了生鱼片,或者日本人消化不了麦当劳的汉堡;实际上美国很多人吃生鱼片,日本也有很多人吃汉堡包。但文化差异确实意味着,一个美国人第一次踏上东京的土地时,总会觉得这地方怪里怪气。尽管哲学上讲,所有的人本质相同,都会恋爱工作唱歌死亡,美国人和日本人仍然很难适应对方国家的厕所布局。 

UnixWindows程序员的文化差异是什么呢?我们暂且不细说这里面的细枝末节,最重要的一点差异是:Unix文化重视那些对程序员有用的代码,Windows文化重视那些对非程序员有用的代码。这么说有点简化,但最大的区别的确就是这一点:我们是为其他程序员设计程序,还是为最终用户设计程序?此外的任何问题都是对这个问题的注脚。 

20世纪60年代末,Unix刚刚诞生,Unix社区的核心文化正在形成,当时的计算机没有“最终用户”。那时的计算机,以及计算机的CPU时间,都很昂贵,都仅仅用在很专业的学术领域。学习计算机”就意味着“学习编程”,而不是像现在这样,“学习使用应用软件”也是“学习计算机”的一种方式。作为现代的最终用户,你可能根本不会编程,而仍然能用计算机做许多事情。但上世纪60年代末,尤其对Unix社区来说,用计算机”就是“编程”。Windows被制作出来的时候,唯一的目标是出售尽可能多的拷贝,以赢得更多利润。“每家的每张桌子上都有一台安装了Windows的计算机”是Windows开发小组的理想,这一理想为windows设定了核心价值观:对最终用户来说更容易使用,但显然,绝大多数最终用户不是程序员。Windows开发过程并没有把“方便其他程序员”作为目标。 

例如,Unix的一个重要原则就是“清晰区分策略和机制”。该原则源于X系统的设计。(虎注:XUnix系统上的图形用户界面的基础设施,其设计者明确提出,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” 

原文最后一段说得也很好……既然是结尾了,就偷偷懒,原文照抄:

There are too many monocultural programmers who, like the typical American kid who never left St. Paul, Minnesota, can't quite tell the difference between a cultural value and a core human value. I've encountered too many Unix programmers who sneer at Windows programming, thinking that Windows is heathen and stupid. Raymond all too frequently falls into the trap of disparaging the values of other cultures without considering where they came from. It's rather rare to find such bigotry among Windows programmers, who are, on the whole, solution-oriented and non-ideological. At the very least, Windows programmers will concede the faults of their culture and say pragmatically, "Look, if you want to sell a word processor to a lot of people, it has to run on their computers, and if that means we use the Evil Registry instead of elegant ~/.rc files to store our settings, so be it." The very fact that the Unix world is so full of self-righteous cultural superiority, "advocacy," and slashdot-karma-whoring sectarianism while the Windows world is more practical ("yeah, whatever, I just need to make a living here") stems from a culture that feels itself under siege, unable to break out of the server closet and hobbyist market and onto the mainstream desktop. This haughtiness-from-a-position-of-weakness is the biggest flaw of <>, but it's not really a big flaw: on the whole, the book is so full of incredibly interesting insight into so many aspects of programming that I'm willing to hold my nose during the rare smelly ideological rants because there's so much to learn about universal ideals from the rest of the book. Indeed I would recommend this book to developers of any culture in any platform with any goals, because so many of the values which it trumpets are universal. When Raymond points out that the CSV format is inferior to the /etc/passwd format, he's trying to score points for Unix against Windows, but, you know what? He's right. /etc/passwd is easier to parse than CSV,  and if you read this book, you'll know why, and you'll be a better programmer.

阅读(2927) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~