一般而言,有两个程序A与程序B“打擂台”,看谁的程序代码里面的“缺陷”(所谓”defects“、“flaws“)密度更小一些,谁就算”赢“。美国有人爱管“闲事”,拿自由软件与私有软件进行“比试”,结果,自由软件胜出,很出人意料。
其实,这件事情很久以前就有人做过。但是,近年来程序“扫描技术”大大提高,有必要“再来一遍”。2月23日,美国Coverity公司公布一份研究报告,声称:自由软件的缺陷密度为0.45,而私有软件的缺陷密度为0.64,两者均低于一般商业软件的平均缺陷密度1.0。(注:所谓缺陷密度是指1千行程序源代码的缺陷平均数。另外,程序缺陷并不限于是“bug”,很可能是程序“小毛病”。)
实际上,在上述扫描中,自由软件共计扫描了3700万行源代码,私有软件(名称需要保密)共计扫描了3亿行源代码。该研究报告说,最干净的程序是Linux 2.6内核(缺陷密度为0.62)、PHP 5.3(缺陷密度为0.20)以及Postgresql 9.1(缺陷密度为0.21)。报告还发现,平均而言,自由软件的应用软件代码“体积”要小一些,平均每个应用程序只有832.000行程序源代码,而私有应用软件的程序源代码,又臭又长,平均有7,500,000行源代码,几乎是自由应用软件的十倍。这是一种很有意思的现象。
实际上,该项研究始于2006年,是一项关于自由软件“可信度”(“Integrity”)研究项目的一个组成部分。如今,事实真相已经大白于天下。自由软件是可信发。但是,有人不服气Coverity的研究,喜欢拍脑门想问题。总是认为私有软件“更可靠”。他们认为:应该是这样:0.45> 0.64,因为自由软件的作者“很杂”,七嘴八舌,弄不出好东西。可是,Coverity也是“书呆子”,只会靠数字说话。
我们应当树立起这样一个“概念”:凡软件必有缺陷,绝对干净的程序是没有的。这是什么原因呢?这是因为,程序是人写的。在不久将来,编程完全实现“自动化”(即所谓“智能编程”),人不参与“其中”,程序缺陷就会消失了。去年年底时候,中国人工智能学会前任理事长钟义信教授曾对我说:“你组织一个“智能编程”专业委员会,我支持你。请你认真考虑。”如今,有了Ubuntu的“HUD接口”的研究进展,我心中“痒痒”的。但是,我想,还是集中精力复活LinuxAid网站为要。今日上午,原《Ubuntu实验室》全体成员将聚会我家研究此事(我请他们帮忙)。(注:他们有的已经结婚成家。在此,我祝贺他们,一生幸福!)