袁萌:自由軟體與私有軟體,誰更可信?

發表於2012-02-27

  一般而言,有兩個程式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實驗室》全體成員將聚會我家研究此事(我請他們幫忙)。(注:他們有的已經結婚成家。在此,我祝賀他們,一生幸福!)

相關文章