最近 Linus Torvalds和一个叫Dmitry Kakurin对C vs. C++进行了一系列的讨论。这种门派之争经常在开发社区中出现,这也不新鲜了,再说C vs. C++就像C++ vs. Java,C++ vs. C#,等等。其实这些争论都并不重要,“使用一把阻击步枪水平,并不取决于阻击步枪的设计,取决于阻击手的使用技能。”这句话应该能总结我对程序设计语言之争的看法。对我来说,一个程序的好坏,只要从三个方面:
基于Con Kolivas和APCMag记者的面谈,我觉得Linux 内核开源项目的开发本身就没有什么开源可言。事实上世界上很多开源项目的开放性都是值得怀疑的。举个例子来说,想要把一个开源项目整得象个封闭的项目,只有少数的几个开发者在一开始就参与了这个项目才能读懂项目源码,如何才能做到这一点?答案是—Tight Coupling,Low Cohesion,No documentation,being rude and arrogant to outsiders—scare them away。在很多开源项目里项目的酋长都是这么做的。要是换我,我也可能这么做。对于酋长来说,这样做可以让自己一直领头,实际上这就是封闭。我很少见到开源项目源码有很强的可读性,易测性,和完好的扩展和改写性。大家都是随意写码,没有任何规范性可言。虽然我不认识Linus Torvalds。我想这个家伙在自己的设计里,随意性肯定不比一般的开源程序员小。我在10年前(当时刚开始编程)就听说过这个传言,说Linus Torvalds写的代码都是乱七八糟的。
Con Kolivas的反馈是,Linux内核的整个项目发展是按照大型数据处理的思路进行的。很多桌面客户端运用的改进都是内核开发人员所不屑的。我想这样的反应其实没有什么不合理的,Linus Torvalds一天到晚在家工作,究竟是谁给他发工资?肯定不是我这样的个人用户。肯定是一些大公司,这些公司需要解决安全性,大型数据处理,让Linux这个母鸡帮这些大公司生蛋。世界上2/3的公司的数据处理服务器都是Linux。还有,世界上很多开发者对UI设计是没有什么兴趣的,他们更感兴趣的是如何更快并准确地处理数据。象Linus Torvalds这样的内核开发者根本不在乎桌面客户端运用。所以可以说,他并不是一个神,他只是一个普通人而已,而且偏见性很强。Con Kolivas所遗憾的是他的工作给不少桌面客户端用户带来了很有意义的改进,但是他在孤军奋战,没有任何外部支持,甚至患上严重的颈椎问题。最后他不得不退出。我是挺佩服Con Kolivas,这种佩服可能没有什么根据,我所佩服的是这个人凭着兴趣搞这些内核修改,而且为一些个人用户,为自己认为对的东西进行奋斗。而不少领导Linux内核开发的酋长却无法吸收和支持这些新想法,给人感觉不好。
Con Kolivas另一个的反馈,令人感到气愤的是,一般用户,比如像我这样长时间使用桌面,如果到Linux内核开发的邮件表上发表看法,提出修改意见,反映问题,一般会遭到内核开发高手的无礼谩骂。他们基本上都是使用scare tactic隔离非高手和高手。goitexpert.com对此的评论是“躲在开源开发幕后的慈禧太后”(Dictator hidden behind the flag of OpenSource)。说白了,这群开发者其实并不开放。你也可以从Linus Torvalds谩骂Dmitry Kakurin看出这些内核高手的傲气多大。按照Linus的说法,C应该用在一切程序的设计上面,甚至连ASP,PHP,C++,C#,Java都应该被C所取代。可惜这个世界是多元化(diversified)的世界。不是一种单一的形式就是同一类形式的唯一展示。Linus Torvalds自己的创造证明了这一点,个人操作系统并不是Windows垄断的。现在有Mac OS,Linux,和Windows。所以难道程序设计语言只有C是最好的,最适用的?当然不是,不同种程序设计语言在处理不同的开发项目时发挥不同的作用。没有什么语言是万能的(可能这里有点偏题)。