最近 Linus Torvalds和一个叫Dmitry Kakurin对C vs. C++进行了一系列的讨论。这种门派之争经常在开发社区中出现,这也不新鲜了,再说C vs. C++就像C++ vs. Java,C++ vs. C#,等等。其实这些争论都并不重要,“使用一把阻击步枪水平,并不取决于阻击步枪的设计,取决于阻击手的使用技能。”这句话应该能总结我对程序设计语言之争的看法。对我来说,一个程序的好坏,只要从三个方面:
·好不好读
·每个单元好不好测试
·容易不容易扩展和修改
一看就可以猜出我是个用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和其他一些内核高手对他的工作的不提供支持,有时甚至阻碍他的贡献。 |