近 Linus Torvalds和一个叫Dmitry Kakurin对C vs. C++进行了一系列的讨论。这种门派之争经常在CSDN上出现,这也不新鲜了,再说C vs. C++就像C++ vs. Java,C++ vs. C#,等等。其实这些争论都并不重要,“使用一把阻击×××水平,并不取决于阻击×××的设计,取决于阻击手的使用技能。”这句话应该能总结我对程序设计语言之争的看法。对我来说,一个程序的好坏,只要从三个方面:
1,好不好读
2,每个单元好不好测试
3,容易不容易扩展和修改
一看就可以猜出我是个用Design Pattern的。我不管Linus Torvalds怎么认为,我觉得这是容易让我,甚至让其他面向对象设计的人能够接受的设计思维。我不觉得这种思想有什么错?当然没有错,世界各地有许多和我有同样想法的人。这些人中很多都是大师。我觉得这些四处散布精简敏捷开发,使用Design Patterns的大师对我的影响很大,让我知道什么是好的设计,什么是糟糕的设计。Linus Torvalds是什么家伙?我不知道,所以他对我影响一点都没有。真正让我感觉不舒服的倒是这个家伙的独裁,傲慢,和封闭!
不久以前,我其实并不反感Linus Torvalds这个家伙。毕竟这个家伙在自己的家里创造出了一个流行的操作系统。后来有一件事情让我感到生气(可能我是很容易受到一些文章的一面之词的影响),让我对Linus Torvalds没有什么好感。不久前的一天,我在CSDN上看到Con Kolivas停止自己的内核改进工程。当然,我很少使用Linux,所以,我根本不知道Con Kolivas是谁,看完他在APCMag上发表的对话,我就对Linux开源项目觉得很反感。我反感的原因如下:
Linux系统开发,特别是内核开发并不开放。
Linux系统的总体设计是为大小公司的服务器系统为基础来设计的。
Linux系统根本不在乎个人用户的使用感受。
我对Linux内核开发人员的傲慢甚至封闭态度,没有任何好感。
Linux系统这么多年的开源开发还无法达到MacOS X的客户端应用,让我觉得这个系统要在桌面系统市场的竞争让我觉得可笑。
基于Con Kolivas和APCMag记者的面谈,我觉得Linux 内核开源项目的开发本身就没有什么开源可言。事实上世界上很多开源项目的开放性都是值得怀疑的。举个例子来说,想要把一个开源项目整得象个封闭的项目,只有少数的几个开发者在一开始就参与了这个项目才能读懂项目源码,如何才能做到这一点?答案是—Tight Coupling,Low Cohesion,No documentation,being rude and arrogant to outsiders—scare them away。在很多开源项目里项目的酋长都是这么做的。要是换我,我也可能这么做。对于酋长来说,这样做可以让自己一直领头,实际上这就是封闭。我很少见到开源项目源码有很强的可读性,易测性,和完好的扩展和改写性。大家都是随意写码,没有任何规范性可言。虽然我不认识Linus Torvalds。我想这个家伙在自己的设计里,随意性肯定不比一般的开源程序员小。我在10年前(当时刚开始编程)就听说过这个传言,说Linus Torvalds写的代码都是乱七八糟的。
Linus Torvalds是唯一能够决定什么代码进入Linux内核代码库。这也不稀奇。毕竟是他开始了这个项目,他有决定权。但是他是一个人,不是上帝,难道他的标准就一定正确么?他曾经亲口说过“也就是说,使用优秀的、高效的、系统级的和可移植的C++的唯一方式,最终还是限于使用C本身具有的所有特性。项目限制只用C,意味着参与的人不会捣乱,也意味着会得到许多真正懂得底层问题,而不会折腾那些白痴‘对象模型’垃圾的程序员。”这句话的本意就是限制他人能够读懂Linux内核的设计,限制公众加入改造他的内核。从APCMag和Con Kolivas的面谈中,你可以看出,Con Kolivas对这种限制是很不满意的。他很不满意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是最好的,最适用的?当然不是,不同种程序设计语言在处理不同的开发项目时发挥不同的作用。没有什么语言是万能的(可能这里有点偏题)。
我所不能想象的是这么一件小事,也就是两个程序员在吵架,也能在CSDN搞出这么大的风波,这个CSDN推波助澜有很大干系。也怪不了CSDN,毕竟是靠人气吃饭的盈利性网站。但是,一群高手就着Linus Torvalds的言论,纷纷评论说C++不好,你们这些爷们的球到哪里去了?C和C++两者都有自己的长短,并不是Linus Torvalds随便就能定义下来。而且智商高情商低的技术狂徒谩骂的话怎么能随便认同。做个熟悉的技术爷们,能够对技术高手说的屁话表示否认。中国程序员要学会走出大师崇拜的阴影,Linus Torvalds,可能只是个智商高情商低的开发者,有时甚至是个自以为是的狂徒,很多事实表明也许这个家伙算不上个大师。只是因为他创造了Linux,并不代表他说的都是对的。
最后用一句话来总结:"技术"不是神,不要随随便便的崇拜,心态决定一切,成功在你脚下。