主题:【原创】读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
再仔细读。
这两天还在琢磨怎么python就没头没尾呢?嗨!
python的发明者因为是数学家,估计在美学角度上与众不同,当然,这是开玩笑。应该说C系列的语言,从C、C++到Perl、PHP、Java都是一脉相承的不太care格式和缩进。当然,语法规定是一回事,实际操作起来又是另外一回事。比如C的缩进方式就有K&R、Gnu以及Linux等等好几种,而且有八个空格、4个空格、两个空格或者一个tab等等的区别,每本入门教科书都要求我们从一而终地使用一种方式。而且这一系列的语句结束都用分号。最不遵守规则的估计是Perl,Perl的程序员是变着花样的写代码,居然还有写成各种漫画样式的,用毛主席的话说是不让工农大众明白他要干嘛。
要是没有一个好的编辑器,想写好Python的代码还真是一件麻烦事,缩进不对,肯定编译出错。而且写惯了C++,每个语句结束都会情不自禁的用小拇指点一下分号。网上有好多Perl的铁杆fans指责Python的一个重要理由就是该死的缩进。
说实在话,以前还真没有系统的想过这个问题。特别是文中提到的WINDOWS和UNIX软件开发的对比性,一个面向其他程序员,一个面向最终用户。
软件不再是简单的堆积代码、实现功能,而是一种文化和艺术,这么一想,呵呵,我估计很多人会轻松很多。
好文
我到觉得这话应该说:精通一门编程语言就可以了。
好像没有那个程序员只学过一门编程语言的,不过精通就难了。过程语言的算法、oop的建模,掌握起来花不了太多时间,但想精通,那基本后半辈子就不用做别的了。就算html,即使把语法都背熟了,也不一定就能设计出美观的静态网页。
帮主每天跟服务器网站打交道,估计这些细节问题早就知道了,不过Joel的这篇有关Unicode文章也颇有些意思:
怎么就没有人跟贴?
河里搞IT太不人文了吧?
花,花。
多年前
读过 祖尔谈软件 [Joel on Software] 的一篇文章
题目是 行进中开火 [Fire And Motion]
其中最后两段话我记忆犹新
摘要如下
想想这些年来,微软开发出来的资料存取方法,从OBDC,RDO,DAO,ADO,OLEDB直到现在的 ADO,.NET,不停翻新,技术上有必要吗?还是因为那个设计组实在蹩脚,每过他妈一年就得重新发明一遍资料存取技术?(实际上可能真是)。它最终的效果其实是一道掩护火力,让竞争者别无选择,只能把本来该用来开发新功能的宝贵时间都用来移植和升级了。仔细看看软件行业,干得好的公司对那些对大公司都依赖最少,不用把所有精力都用来为赶潮流而把程序重写一遍,还得修改那些只有在Windows XP上才会出现的缺陷。那些花太多时间去猜测微软未来发展方向的公司,日子都好过不了。有些人见了.NET就发怵,忍不住要按.NET来完全重建自己的体系结构,以为自己别无选择。哥门儿,看清楚了,微软是在朝你开火呢,而且这只是掩护火力。这游戏就是这么玩儿的。这样一来,他们就可以大步朝前走,而你却不能。你要支持Hailstorm 吗?SOAP呢?还有RDF?是因为你的顾客需要,所以你支持它们?还是因为有人朝你开火而你觉得应该还击?大公司的营销部都懂火力掩护。他们到客人那儿就说,“你们不一定非买我们的。谁的产品最好您就应该买谁的。不过,我们想提醒您,在下单之前最好先确认他们支持(XML/ SOAP/CDE/J2EE)。否则你们就会被他们的技术套牢。”。等到小公司去向这个客户推销的时候,那个听话的CTO就会问他们:“你们有J2EE吗?”。他们回去就只好不管卖不卖得掉,都埋头打造他们的J2EE。他们也就再没有机会来展示自己的特色了。其实,这只不过是个打勾功能。因为有个打勾拦在那儿空着,你就必须有这个功能。其实谁都不需要它。这就是火力掩护。
对于我这样的小公司来说,行进中开火意味着两件事。别跟时间过不去,同时你还得每天都进步。天不负苦心人,你终有出头的一天。我昨天花了一天时间只不过让FogBUGZ的颜色稍微好看点。这不要紧,只要不停步。最重要的是,我们的软件越来越好,客人越来越多。在我们达到 Oracle 的规模之前,我们并不需要通盘战略。我们只需要每天早晨到办公室来,别多想,打开编程器。
=====================
Joel Spolsky 是纽约市一家小软件公司,Fog Creek Software 的创始人。他毕业于耶鲁大学,曾在美国微软公司,Viacom, Juno 任软件设计师及经理。
很多所谓的技术实际上的确是shit。比如.net,一个只能在windows上面跑的"跨平台"解释器,真是个有用的东西吗?
祖尔谈软件
Web at : http://chinese.joelonsoftware.com/index.html
如果楼上的有残花枯叶
采一朵给俺新宾
谢谢谢谢
与电脑相关的论坛总是少不了陈年老贴:Windows和Linux谁高谁低
双方基本上是谁都瞧对方不顺眼呀
这个“面向用户”和“面向程序员”的说法真是很到位,这也是我对linux进入家庭用户的视野不是很看好的原因。其实,windows算是介于用户和程序员之间的系统,Mac的系统算是真正面向用户的,所以很多米国的老头老太太都还在用Mac,一方面是忠于品牌,另一方面也是Windows也要学学才能用好,不像Mac,稍微摸索一下就可以了。
个人觉得,现在以ubuntu为首的一些系统已经开始挑战windows的地位了。当年听到windows黑屏的传说之后,就给机器里面装了一套ubuntu,现在平常的上网什么的已经就全在ubuntu下做了。虽然有些东西的设置还是很麻烦,但是比起当年装red hat的时候,被无线网卡的驱动折腾得死去活来已经有很大的进步了。如果MS真的严厉打击盗版,估计大家就会慢慢的转向Linux了。呵呵,MS也不容易呀,要在打击盗版和占有家庭用户之间找一个平衡点……