英特爾今天推出了機(jī)器編程研究系統(tǒng)ControlFlag,它可以自主檢測(cè)代碼中的錯(cuò)誤。雖然仍處于早期階段,這個(gè)新穎的自我監(jiān)督系統(tǒng)有望成為一個(gè)強(qiáng)大的生產(chǎn)力工具,幫助軟件開(kāi)發(fā)者進(jìn)行耗時(shí)費(fèi)力的Debug。在初步測(cè)試中,ControlFlag利用超過(guò)10億行未標(biāo)記的產(chǎn)品級(jí)別的代碼進(jìn)行了訓(xùn)練并學(xué)習(xí)了新的缺陷。
英特爾首席科學(xué)家、英特爾研究院機(jī)器編程研究主任及創(chuàng)始人Justin Gottschlich表示:“我們認(rèn)為ControlFlag是一個(gè)強(qiáng)大的新工具,可以大幅減少評(píng)估和Debug代碼所需的時(shí)間和成本。研究發(fā)現(xiàn),軟件開(kāi)發(fā)者會(huì)花費(fèi)大約一半的時(shí)間用來(lái)Debug。通過(guò)ControlFlag以及類似的系統(tǒng),程序員有望大幅減少Debug的時(shí)間并把更多時(shí)間用于人類程序員最擅長(zhǎng)的工作——向機(jī)器展現(xiàn)有創(chuàng)造性的新想法。”
在軟件重要性逐漸突顯的今天,開(kāi)發(fā)者依然繼續(xù)把不成比例的大量時(shí)間用于修復(fù)Bug,而不是用于寫代碼。事實(shí)上,在IT行業(yè)每年花費(fèi)的1.25萬(wàn)億美元軟件開(kāi)發(fā)成本中,大約有50%是用于Debug代碼1 。
隨著異構(gòu)時(shí)代的來(lái)臨,即由多樣化專用處理器組合來(lái)管理當(dāng)今的海量數(shù)據(jù),管理這些系統(tǒng)所需的軟件變得越來(lái)越復(fù)雜,使得出現(xiàn)Bug的可能性也越來(lái)越高。此外,找到能夠?yàn)榭缂軜?gòu)的硬件正確、高效、安全地寫代碼的程序員非常困難,這同樣也增加了代碼中出現(xiàn)難以發(fā)現(xiàn)的新錯(cuò)誤的可能性。因此,Debug代碼工作將給開(kāi)發(fā)者和整個(gè)行業(yè)帶來(lái)更高的代價(jià)。
完全實(shí)現(xiàn)的ControlFlag通過(guò)自動(dòng)化處理測(cè)試、監(jiān)控和Debug等繁瑣的軟件開(kāi)發(fā)工作,可以幫助緩解上述挑戰(zhàn)。這不僅可以提高開(kāi)發(fā)者的工作效率并讓他們把更多時(shí)間用于創(chuàng)意,也能解決當(dāng)前軟件開(kāi)發(fā)中成本最高的問(wèn)題之一。
ControlFlag檢測(cè)Bug的功能是通過(guò)機(jī)器編程實(shí)現(xiàn)的,其中融合了機(jī)器學(xué)習(xí)、形式化方法、編程語(yǔ)言、編譯器和計(jì)算機(jī)系統(tǒng)。
具體來(lái)說(shuō),ControlFlag通過(guò)被稱為異常檢測(cè)(anomaly detection)的功能進(jìn)行運(yùn)轉(zhuǎn)。作為自然界中生活的人類,我們通過(guò)觀察了解到某些被認(rèn)為是“正常”的模式。類似地,ControlFlag通過(guò)學(xué)習(xí)經(jīng)過(guò)驗(yàn)證的例子來(lái)檢測(cè)正常的編程模式,發(fā)現(xiàn)代碼中可能造成Bug的異常。此外,不管代碼使用什么編程語(yǔ)言,ControlFlag都可以檢測(cè)這些異常。
ControlFlag的無(wú)監(jiān)督模式識(shí)別方法的一個(gè)主要優(yōu)勢(shì)是,它可以從本質(zhì)上學(xué)會(huì)適應(yīng)開(kāi)發(fā)者的風(fēng)格。在有限的需要評(píng)估的控制工具輸入信息中,ControlFlag可以識(shí)別編程語(yǔ)言中的各種風(fēng)格,類似于讀者識(shí)別英語(yǔ)中使用完整單詞和縮略語(yǔ)的差異。
該工具會(huì)學(xué)會(huì)識(shí)別并標(biāo)記這些風(fēng)格選擇,并根據(jù)其洞察可以自制錯(cuò)誤識(shí)別和建議解決方案,從而讓ControlFlag盡可能避免把兩個(gè)開(kāi)發(fā)團(tuán)隊(duì)之間的風(fēng)格差異認(rèn)為是代碼錯(cuò)誤。ControlFlag已經(jīng)證明,能夠在廣泛使用的產(chǎn)品級(jí)別代碼中發(fā)現(xiàn)隱藏的Bug,而這些代碼之前已經(jīng)被軟件開(kāi)發(fā)者審核過(guò)。例如,在分析cURL(一個(gè)開(kāi)源的命令行工具,被程序員廣泛地用于實(shí)現(xiàn)互聯(lián)網(wǎng)下載)時(shí),ControlFlag發(fā)現(xiàn)了一個(gè)之前未被發(fā)現(xiàn)的異常,促使cURL開(kāi)發(fā)者提出了一個(gè)更好的解決方案。
英特爾甚至已經(jīng)開(kāi)始評(píng)估在內(nèi)部使用ControlFlag,在自己的軟件和固件產(chǎn)品化中尋找Bug。這是英特爾Rapid Analysis for Developers項(xiàng)目的關(guān)鍵組成部分,該項(xiàng)目旨在通過(guò)提供專家支持從而幫助程序員加快速度。
fqj
-
英特爾
+關(guān)注
關(guān)注
60文章
9880瀏覽量
171502 -
編程
+關(guān)注
關(guān)注
88文章
3592瀏覽量
93594
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論