英特爾今天發(fā)布了機器編程研究系統(tǒng)ControlFlag,它可以自動檢測代碼中的錯誤。
盡管仍處于早期階段,但這種新穎的自我監(jiān)控系統(tǒng)有望成為功能強大的生產(chǎn)力工具,以幫助軟件開發(fā)人員執(zhí)行耗時且勞動密集的調(diào)試。
在初步測試中,ControlFlag使用了超過10億行未標記的產(chǎn)品級代碼來培訓和學習新的缺陷。
英特爾首席科學家,機器編程研究總監(jiān)兼英特爾研究院創(chuàng)始人賈斯汀·戈茨利希(Justin Gottschlich)表示:“我們相信ControlFlag是一種功能強大的新工具,可以大大減少評估和調(diào)試代碼所需的時間和成本。
該研究發(fā)現(xiàn),軟件開發(fā)人員將大約一半的時間花在調(diào)試上。
通過ControlFlag和類似的系統(tǒng),程序員有望大大減少調(diào)試時間,并將更多的時間花在人類程序員最擅長向計算機展示創(chuàng)造性的新思想的方面。
如今,當軟件的重要性變得越來越重要時,開發(fā)人員仍然繼續(xù)花費不成比例的時間來修復(fù)錯誤,而不是編寫代碼。
實際上,IT行業(yè)每年在1.25萬億美元的軟件開發(fā)成本中,約有50%用于調(diào)試代碼1。
隨著異構(gòu)時代的到來,也就是多種多樣的專用處理器的組合來管理當今的海量數(shù)據(jù),管理這些系統(tǒng)所需的軟件變得越來越復(fù)雜,導致出現(xiàn)錯誤的可能性越來越大。
更傾向于。
此外,很難找到能夠正確,高效和安全地為跨體系結(jié)構(gòu)的硬件編寫代碼的程序員,這也增加了代碼中新的和難以發(fā)現(xiàn)的錯誤的可能性。
因此,調(diào)試代碼的工作將為開發(fā)人員和整個行業(yè)帶來更高的價格。
完全實現(xiàn)的ControlFlag通過自動化繁瑣的軟件開發(fā)工作(例如測試,監(jiān)視和調(diào)試),可以幫助緩解上述挑戰(zhàn)。
這不僅提高了開發(fā)人員的效率,并使他們能夠?qū)⒏嗟臅r間花在創(chuàng)造力上,而且解決了當前軟件開發(fā)中最昂貴的問題之一。
ControlFlag檢測錯誤的功能是通過機器編程實現(xiàn)的,該機器編程結(jié)合了機器學習,形式化方法,編程語言,編譯器和計算機系統(tǒng)。
具體來說,ControlFlag通過稱為異常檢測的功能進行操作。
作為人類生活在自然界中,我們了解某些被認為是“正?!钡哪J健?/p>
通過觀察。
同樣,ControlFlag通過學習經(jīng)過驗證的示例來檢測正常的編程模式,并在代碼中查找可能導致錯誤的異常。
此外,無論代碼使用哪種編程語言,ControlFlag都可以檢測到這些異常。
ControlFlag的無監(jiān)督模式識別方法的主要優(yōu)點之一是,它可以從本質(zhì)上學習適應(yīng)開發(fā)人員的樣式。
在需要評估的控制工具輸入信息有限的情況下,ControlFlag可以識別編程語言中的各種樣式,類似于讀者在使用完整單詞和縮寫詞來識別英語時的區(qū)別。
該工具將學習識別并標記這些樣式選擇,并基于其洞察力來識別錯誤并提出解決方案,以便ControlFlag嘗試避免兩個開發(fā)團隊之間的樣式差異(因為代碼錯誤)。
ControlFlag已證明,它可以在廣泛使用的產(chǎn)品級代碼中找到隱藏的錯誤,這些錯誤已由軟件開發(fā)人員進行過審查。
例如,當分析cURL(程序員廣泛使用的開放源代碼命令行工具來實現(xiàn)Internet下載)時,ControlFlag發(fā)現(xiàn)了一個未被發(fā)現(xiàn)的異常,促使cURL開發(fā)人員提出了一種更好的解決方案。
英特爾甚至已經(jīng)開始在內(nèi)部評估ControlFlag的使用,以尋找其自己的軟件和固件產(chǎn)品化過程中的錯誤。
這是“英特爾開發(fā)人員快速分析”項目的關(guān)鍵組件,該項目旨在通過提供專家支持來幫助程序員加速開發(fā)。