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