研究顯示,用Python更易出現軟體缺陷!

趙鈺瑩發表於2018-05-07

經常會有剛入行的程式設計師試圖比較各大程式語言之間的差別,然後選擇自己認為較好的程式語言學習。雖然圈子裡公認各大程式語言之間沒有好壞之分,只有是否合適,但不知廣大程式設計師有沒有思考過程式語言對軟體質量的影響呢。

  近日,研究人員Baishakhi Ray、Daryl Posnett、Premkumar Devanbu、Vladimir Filkov 從GitHub收集了大量資料(728個專案,6300萬SLOC,29,000作者,150萬提交,17種語言)以回答這個問題:程式語言與軟體質量之間的關係是什麼呢?

  他們發現:

  程式語言確實對軟體質量有影響,但影響程度一般;

  不允許型別混淆的程式語言比允許型別混亂的要更好一些;

  在函數語言程式設計語言中,靜態型別比動態型別更好;

  函數語言程式設計語言比程式式程式設計語言效果差。

  結論:

  函數語言程式設計語言編寫的軟體質量顯然不如程式式程式設計語言,C、C ++、Objective-C、Php和Python與更多數量的缺陷修復相關,而Clojure、Haskell、Ruby和Scala則不太可能導致缺陷修復。而在函數語言程式設計語言中,靜態型別語言表現更好。語言型別與軟體缺陷之間存在很小但重要的關係,函數語言程式設計語言比過程式語言或指令碼語言的缺陷更多。缺陷型別與程式語言密切相關, 一些缺陷型別,如記憶體錯誤和併發錯誤取決於語言原語。對於具體類別而言,程式語言對整體缺陷的影響更大。

研究顯示,用Python更易出現軟體缺陷!

  上圖顯示的第一列為程式語言,最後一列為對應的bug修復數,不難看出Python的41.9明顯高於Java的35.9,如果Python想取代Java,似乎還欠缺很大火候啊!此外,C語言的182.6實在是多得離譜,可能是因為C語言問世較早,所以經歷的摸索期和修復期更長的關係,C++、C#或許與C語言有著相同的原因。

  本次實驗所選用的語言和專案資料是從公共GitHub資料庫GitHub Archive中提取出來的。研究人員從GitHub中選擇了前20種程式語言(不含CSS、Shell指令碼和Vim指令碼,因為它們不被視為通用語言)並新增了Typescript。同時,檢索了這些主流程式語言的前50個開源專案!

研究顯示,用Python更易出現軟體缺陷!

  對於每個專案(共728個),研究人員使用git下載了未合併的提交,包括提交日誌、作者日期和作者姓名。根據每個檔案新增、刪除的行計算程式碼流失和每個提交修改的檔案數,然後從修改的檔案擴充套件中檢索與每個提交相關聯的語言。對於每個提交,通過從相應專案的第一次提交中減去其提交日期來計算其提交週期,並計算其他專案相關統計資訊,包括專案的最大提交週期和參與的開發人員總數。研究人員通過搜尋錯誤相關的關鍵字,確定了對個別專案的錯誤修復提交,比如“錯誤”、修復”、“問題”、“不正確”、“故障“、”缺陷”等。

  然後,根據其原因和影響將錯誤分為兩個階段:關鍵字搜尋和監督分類。研究人員使用迴歸模型記錄軟體專案相關的缺陷提交數量。

  這些結果是否對程式設計師選擇程式語言有所幫助呢?會不會動搖你現在的基本選擇呢?評論告訴我們吧!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2153943/,如需轉載,請註明出處,否則將追究法律責任。

相關文章