新的編程指南將大幅消滅bug?程序員大呼爽!
有很多令人困惑的代碼可以導致編程中的錯誤,最近科羅拉多大學科羅拉多斯普林斯分校和美國賓夕法尼亞州立大學的研究人員進行了一項新的研究,試圖證明:許多代碼模式在統計學意義上增加了誤差,而不是模式的等效代碼,並且刪除這些代碼模式對程序員了解大型項目代碼很有幫助。
這項研究解決了源代碼中的誤解,並嘗試證明「能夠可靠地識別和刪除可能導致誤解的代碼並將提高生產力降低維護成本。」結果提供了針對通用編碼的建議,並提出了擴展現有指南的新方法。
源代碼具有雙重目的。它將程序指令分別傳達給機器和人類,當程序員對於一段代碼的期待行為與機器的執行行為不同時,問題就出現了。
換句話說,程序員對一段代碼的行為解釋與機器不同。雖然在某些情況下(例如涉及隨機性,API知識不明確或未定義行為)的情況下,解釋的差異自然會發生,但它也可能發生在小型獨立的代碼行中,這些易於誤解的設計模式自然會導致代碼中的錯誤。
然而,確定和刪除導致混亂的程序元素不僅會導致更少的bug。根據研究,了解源代碼是不斷成功的軟體項目最重要的元素之一。這些錯誤通常導致巨大的成本和錯誤的產品,並且有無數公司為此支付了高昂的費用。這些錯誤的後果可能包括生產率下降,產品故障和更高的成本。
研究人員尋求並驗證導致程序員誤解的最小常規代碼。導致誤解的這些模式簡稱為「混亂原子」或「原子」,它們可以作為理解使代碼混亂因素的經驗和基礎。
該組研究人員選擇的程序已經被人們認可(國際奧委會獲獎者——國際C語言混亂代碼大賽)和孤立的小型代碼,通常包含在一行內,這些IOCCC程序是讓程序員混亂的根本原因。
73名有經驗的參與者進行實驗,以發現這些代碼模式中的哪些代碼模式引起統計學上的顯著混亂(即,主程序員相信包含該模式的程序行為與C語言規範不同)。
接下來,他們從大的混亂程序中消除這些混亂原因的影響,也來自國際奧委會獲獎者。通過保留轉換應用行為去除識別的原子並使用這些程序作為第二個實驗的基礎來簡化IOCCC程序。
招募了10.43名未參加實驗的程序員。研究人員想確定:通過澄清這些原子,可以減少多少程序錯誤。
結果
通過實驗研究,證明了混亂原子的存在和影響。通過國際C語言混亂代碼大賽的逆向工程的獲勝者,最終生成了19個潛在原子的部分列表。在實驗中,與功能等效的代碼片段進行對比,以刪除混亂原子。在19個提出的原子中,15個在統計學上被證實對受試者有明顯的混淆。
他們的結果提供了針對通用編碼建議的證據,並提出了擴展現有指南的新方法。具體情況可以訪問:https://atomsofconfusion.com/
TAG:IT168企業級 |