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