某些編程語言更容易出錯?研究人員提出質疑

在人們的印象中,使用某些編程語言往往更容易出現bug,但是這種印象基本還處於比較“唯心”的階段,在近來的研究中幾乎沒有發現有力的證據。

在2014年軟件工程基礎(FSE)大會上發表的一篇學術論文“A Large Scale Study of Programming Languages and Code Quality in Github”聲稱,某些計算機編程語言具有更高的代碼錯誤率,並由此引發了一場開發者大討論。

這篇論文由加州大學戴維斯分校計算機科學家Baishakhi Ray、Daryl Posnett、Vladimir Filkov和Premkumar Devanbu共同撰寫,論文指出,使用C語言、C++、Objective-C、JavaScript、PHP和Python編寫的代碼比其他語言包含了更多的缺陷。

來自馬薩諸塞州阿默斯特大學、美國東北大學和布拉格捷克技術大學的計算機科學家們試圖重現這項研究結果。

在最近的一篇題爲“On the Impact of Programming Languages on Code Quality”的ArXiv論文中,Emery Berger、Celeste Hollenbeck、Petr Maj、Olga Vitek和Jan Vitek重新回顧了2014年論文中的四個主要發現,以此來評估有關編程語言設計重要性的假設。

但他們並沒有發現任何有力的證據。他們嘗試重現2014年的研究成果,但大多以失敗告終。他們的分析表明,C++代碼中實際出現的缺陷比它們應該出現的頻率更高,但即便如此,他們認爲,這從統計學方面來看仍然是無關緊要的。

相關性和因果關係

馬薩諸塞州阿默斯特大學計算機科學教授Emery Berger在接受“The Register”的電話採訪時表示,最重要的是要區分重現失敗的含義和實際情況之間的區別。

他說,最初的研究旨在建立編程語言與缺陷之間的相關性,而人們誤將這種相關性看成是一種因果關係。

Berger說,“這並不意味着它就是不對的,只能說明他們的很多說法站不住腳。在數據科學家們當中流行着一個玩笑——如果你對數據進行足夠長時間的折磨,它們最終會說話。僅僅因爲擁有數據並不意味着它們就是建立某些特定主張的正確數據。GitHub代碼庫的數據是一個很好的資源,但並不能通過分析這些數據來確定所有的事實”。

2014年分析GitHub代碼得出的發現還包括:

  • “某些語言與缺陷的相關性比其他語言更高,儘管效果沒有那麼明顯。”

  • “語言類別和缺陷之間存在着一個很小但卻很重要的關係。函數式語言與缺陷的相關性比過程式語言或腳本語言要小一些。”

  • “領域和語言缺陷傾向之間不存在一般性關係。”

  • “缺陷類型與語言密切相關。”

但是,當研究人員試圖重現早期的研究結果時,大多數情況下卻做不到。對於第一個命題,他們在編程語言與其缺陷數量關係方面發現了一些細微差別,但這並不重要。

他們無法重現其餘三個命題的結果,最後兩次試圖重現結果的努力因數據缺失而以失敗告終。

這是一門科學

Berger、Hollenbeck、Maj和Vitek在他們的論文中寫道:“我們已經發現FSE研究中存在很多問題,這些問題導致其關鍵結果無效。我們的目的不是要責備誰,基於大規模代碼庫對編程語言進行統計分析本來就是一件很困難的事情”。

未能重現結果並不意味會得出相反的結果:無論是使用函數式、過程式還是面向對象編程語言並不重要,語言是靜態類型的還是動態類型、是強類型的還是弱類型的也不重要。實際上,數據並沒有告訴我們這些信息。

Berger表示,除了這項研究之外,更重要的是編程語言是否會產生影響。

他說:“我心裏是這麼認爲的,但在現實當中不可能通過實驗來證實”。

他說,使用Haskell的程序員比普通Python程序員受過更多的學術訓練,“我們假設Haskell程序的錯誤更少,可能是因爲使用Haskell的程序員大都擁有博士學位”。

換句話說,有很多上下文信息沒有被納入到GitHub的數據分析中。

結果的反面是科學的運作方式、實驗結果應該針對可重複性進行測試,但這種情況通常不會發生。《自然》雜誌2016年發佈的一份報告顯示,在接受調查的1576名科學家中,有一半甚至無法重現自己的研究成果。

值得稱讚的是,研究人員最初預見了工作中存在缺陷的可能性,並指出了在結論有效性方面存在的幾個潛在威脅。

這些研究人員對數據科學陷阱提出了警告,並強調了通過自動化研究來實現可重現研究的必要性。

他們總結說:“雖然統計分析與大數據語料庫相結合是一種強大的工具,可以用來解答最難的研究性問題,但這些研究所涉及的工作量以及出錯的可能性是巨大的”。

英文原文:https://www.theregister.co.uk/2019/01/30/programming_bugs
學術論文 A Large Scale Study of Programming Languages and Code Quality in Github:http://web.cs.ucdavis.edu/~filkov/papers/lang_github.pdf
學術論文 On the Impact of Programming Languages on Code Quality:https://arxiv.org/pdf/1901.10220.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章