主题:【原创】读Joel的“二元文化主义” -- 新科进士
最近上网,在Joel on Software上读到一篇文章,是纽约著名的软件工程师Joel Spolsky写的"Biculturalism",中文应该翻译成"二元文化主义"。其中有些话很耐人寻味:
"在Unix和Windows的程序员之间的文化差异是什么呢?有许多细微的所在,但是在很大程度上可以归结到一点上:Unix的文化重视对其他程序员有用的程序,而Windows的文化重视对非程序员有用的程序。"
有太多的一元文化程序员,他们就像从未离开过明尼苏达州圣保罗的典型的美国小孩儿那样,根本无法区别文化价值和人类核心价值间的差异。我碰见过太多嘲笑Windows程序设计的Unix程序员,他们认为Windows野蛮而愚蠢。Raymond经常性地掉进不考虑原由就蔑视其他文化的陷阱。在Windows程序员中则很少会发现这种偏见,总的看来,Windows程序员是面向解决方案而不是面向意识形态的。至少,Windows的程序员们承认他们文化的缺陷并很实在地说:"看,如果你想把字处理器卖给很多人,就得能在他们机器上运行,如果非要用邪恶的注册表代替优雅的~/.rc文件来存储我们的设定,这么做就是了。" Unix世界如今充满了自以为是的文化优越,"吹鼓手"和slashdot-karma-whoring【注】的宗派主义,而Windows世界更务实些("是呀,无论怎样,我好歹要在这儿讨生活嘛"),这种现象来源于一种感觉自身处在被围剿中的文化,无法突破服务器的小天地和计算机爱好者的市场而进入主流桌面领域。
Joel写了很多文章,在他的网站上都可以找到。尤其是软件开发和项目管理方面,很多文章堪称经典。我们这些浪迹天涯讨生活的程序员,可以从他的许多文章中找到貌似体面的工作里种种心酸和无奈,也可以学到许多有用的经验。他的文章许多已经被翻译成10几种语言,其中比较齐全的是繁体中文,在mediawiki上可以找到。
本文是作者对Eric S. Raymond的The Art of UNIX Programming一书的简要观感。至于这本书,我们可以在外链出处网站上在线浏览,也可以在书店里买到。虽然出版很早了,但应该说是Unix编程著作中史诗般的作品,想学习Unix/Linux编程的朋友不可不读,它的许多思想和方法是Unix程序设计的精髓。Eric S. Raymond,名字缩写为ESR,是个传奇人物,我们可以到google上找找看对他的介绍,基本是铺天盖地。他还有一本书很有名:The Cathedral and the Bazaar。今天在程序员世界里尽人皆知的"开源"(Open source)一词,就是他提出来的,他的名言是"Given enough eyeballs, all bugs are shallow"。许多Python程序员估计都是读了他的Why Python?一文,开始走上了用缩进代替大括号的编程之旅。
说句实话,我对Joel的文章其实深有同感。我们生活在一个纷乱的世界里,这个世界从它起源的时候就开始充满了各种对立和冲突,人的出现把这种情况从自然领域带到了抽象的思想领域。抛开亨廷顿的文明或者历史不谈,仅仅是计算机世界里,对立和冲突就从来没有停止过。我们打开一部计算机发展的历史,其实就是各种冲突的历史:编程语言之间的冲突(Perl vs Python、C++ vs Java、Perl vs PHP、ASP vs PHP以及各种想得出花样的比较)、文本编辑器之间的冲突(emacs vs vi)、操作系统之间的冲突(最有名的Windows vs Liunx)、CPU之间的冲突,甚至小到计算机上使用的字体也有Helvetica vs. Arial之间的口水仗。这些冲突在程序员世界里也许精彩纷呈,想当年鲍默塔尔和Linus之间关于Minix和Linux的BBS之战在众多Linux的fans中可以说是耳熟能详,两个大师各自用精深的软硬件理论作为武器,让我们这些后来的程序员获益匪浅,不过这样的经典毕竟太少,更多的论战基本最后都演变成人身攻击了和对对方辨友智商的探讨。于是乎,我们发现,如果想从BBS里找到关于哪一门语言更适合初学者这样的问题的时候,你会得到不下于20种答案,并且你的问题本身就是点燃一场战火的导火索。所以我们明白,其实答案不重要,也许nobody真正cares你应该学什么,而在于参与一场兽血沸腾的虚拟游戏。
我们当然知道,这中间许多冲突和对抗源于市场这一看不见的手和优于一切的商业利益。但正如Joel说的,还有很多来自于偏见,文化的偏见、莫名其妙的优越感和无以言表的偏执。在Linuxcn的BBS里看到一位网友说他自从使用Red Hat以后,发现liunx的字体是那么的美观,再看windows的字体就觉得丑陋得让人作呕。说实话,我从未找到他这种感觉,从我的审美角度,始终没有发现Bitstream为什么会让这位老兄心神愉悦而Tahoma就让他胃部痉挛。我倒是觉得arphic类的字体实在让人考虑是否应该在30岁之前就准备老花镜了。很多人似乎都有一种情节:喜欢一样东西就必须以讨厌一样东西的方式来表达。因为我喜欢Linux,所以我讨厌windows的一切,因为我喜欢Mac OS的美观和简单,所以我讨厌windows的拙劣和linux的简陋,因为我喜欢windows的方便,所以我讨厌linux的自找麻烦,因为我喜欢gnome的整洁,所以我讨厌kde的浮华。这种人为制造出来的对立,时常让人想起几千年人类历史中无数不可思议的争端。
也许Joel对Unix程序员有些苛责了,毕竟是环境和文化塑造了个体。但我觉得合格的程序员的确应该好好读一读Joel这篇文章,虽然这篇文章有些年头了,但他所揭示的许多现象也许再过若干年依旧如是。
【注】slashdot-karma-whoring