英特爾近日開源了機器編程工具 ControlFlag,這是一種使用機器學(xué)習(xí)來檢測計算機代碼問題的工具。理想情況下,ControlFlag 的應(yīng)用可以減少調(diào)試應(yīng)用程序和軟件所需的時間。
在測試中,英特爾的機器編程研究團隊表示,ControlFlag 在專有的“生產(chǎn)質(zhì)量(production-quality)”軟件中發(fā)現(xiàn)了數(shù)百個缺陷,證明了它的實用性。
機器編程工具 ControlFlag 可通過 https://github.com/IntelLabs/control-flag 下載。
一、意圖、發(fā)明、適應(yīng),英特爾機器編程三大支柱
英特爾機器編程研究團隊(MPR)的歷史可以追溯到 2017 年。從那時起,英特爾就已經(jīng)開始著手,構(gòu)建新穎的機器編程(MP)系統(tǒng),如 ControlFlag,這些系統(tǒng)有助于改進(jìn)代碼調(diào)試或自動提取性能。
英特爾實驗室的首席人工智能科學(xué)家兼機器編程研究總監(jiān)和創(chuàng)始人 Justin Gottschlich 表示,研究小組的第一個目標(biāo)是將開發(fā)軟件所需的總時間減少 1,000 倍。例如,今天可能需要三年才能完成的事情,在未來一天內(nèi)就可以用機器編程系統(tǒng)完成。除了提高軟件開發(fā)生產(chǎn)力之外,第二個目標(biāo)是確保機器編程系統(tǒng)在合成新軟件時保持特定的質(zhì)量特征,如準(zhǔn)確率、性能、安全性和可維護(hù)性等特征。
目前,幾乎所有大型軟件在準(zhǔn)確性、性能或安全方面都存在漏洞。一些留存時間久,無法被專家程序員檢測到的錯誤可以通過機器編程自動檢測,并實現(xiàn)零人工干預(yù)。此外,隨著軟件在不斷增加新功能,軟件更新會使得引入錯誤的可能性增加并出現(xiàn)問題。
值得注意的是,某些錯誤會存在潛在的安全漏洞,造成損失數(shù)百萬美元的災(zāi)難性后果。
“機器編程的三大支柱”是英特爾機器編程研究的關(guān)鍵:
第一個支柱是意圖,旨在發(fā)現(xiàn)編程的意圖,從軟件中提升意義,確定人類向機器表達(dá)想法的新方式。
第二個支柱是發(fā)明,創(chuàng)建新的算法和數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)意圖,涉及創(chuàng)建或改進(jìn)算法核心硬件和軟件構(gòu)建塊,使用各種機器編程技術(shù)實現(xiàn)一些已知的意圖。
第三個支柱是適應(yīng),在不斷變化的硬件、軟件世界中發(fā)展軟件,自主地演變軟件特定生態(tài)系統(tǒng),協(xié)助計算后端進(jìn)展。自適應(yīng)系統(tǒng)主要用于幫助識別和改進(jìn)軟件質(zhì)量特性,例如性能、安全性和可維護(hù)性。
從三大支柱的角度來看,ControlFlag 集中落在了適應(yīng)支柱,它試圖找到軟件編碼異常。雖然 ControlFlag 還不能自動減輕它發(fā)現(xiàn)的缺陷,但它會為用戶提供潛在更正的建議。
二、從英特爾自用到開源,測試近一年
正式開源前,ControlFlag 已在生產(chǎn)級軟件和廣泛使用的開源軟件系統(tǒng)上進(jìn)行了測試。
例如去年,ControlFlag 發(fā)現(xiàn)了客戶端 URL(Client URL,cURL)中的代碼異常。客戶端 URL 是一個計算機軟件項目,每天使用各種網(wǎng)絡(luò)協(xié)議傳輸數(shù)據(jù)超過 10 億次。在向客戶端 URL 團隊報告異常后,他們認(rèn)可了 ControlFlag 的發(fā)現(xiàn)并隨后修補了代碼。
ControlFlag 于 2020 年 12 月首次推出,但在開源之前僅在英特爾內(nèi)部使用。
Gottschlich 在 LinkedIn 上的一篇博文中提到:“最近,ControlFlag 通過在專有生產(chǎn)級軟件中識別數(shù)百個與內(nèi)存和潛在系統(tǒng)崩潰錯誤相關(guān)的缺陷,取得了最先進(jìn)的進(jìn)展。此外,ControlFlag 在幾個高質(zhì)量的開源軟件存儲庫中也發(fā)現(xiàn)了數(shù)十個新的異常。”
ControlFlag 可與任何包含控制結(jié)構(gòu)的編程語言一起使用,并利用無監(jiān)督學(xué)習(xí)來減少調(diào)試工作,從未標(biāo)記的源代碼中學(xué)習(xí)。隨著新數(shù)據(jù)的引入,它會不斷發(fā)展以使其實現(xiàn)自我發(fā)展。ControlFlag 將自學(xué)對數(shù)據(jù)進(jìn)行分類,從其固有結(jié)構(gòu)中學(xué)習(xí)處理未標(biāo)記的數(shù)據(jù)。
ControlFlag 不斷從未標(biāo)記的源代碼中學(xué)習(xí),隨著新數(shù)據(jù)的引入,不斷“進(jìn)化”使自己變得更好。雖然 ControlFlag 還不能自動減輕它發(fā)現(xiàn)的編程缺陷,但該工具為開發(fā)人員提供了潛在的更正建議,Gottschlich 表示。
三、減少代碼調(diào)試時間,培育開源生態(tài)
這些驚人的結(jié)果顯示了 ControlFlag 能夠顯著提高軟件開發(fā)的成本和效率。此外,對高質(zhì)量代碼的需求增多,吸引了越來越多的有抱負(fù)的程序員加入這個行業(yè)。
最近的一項研究發(fā)現(xiàn),2020 年 IT 行業(yè)在與調(diào)試代碼相關(guān)的軟件開發(fā)成本上花費了約 2 萬億美元,其中約 50% 的 IT 預(yù)算用于調(diào)試代碼。
“英特爾致力于使軟件更加完善,維護(hù)起來更輕松,同時保持卓越的性能,而不會引入安全漏洞。我們希望像 ControlFlag 這樣的項目可以大大減少在全球范圍內(nèi)開發(fā)軟件所需的時間。”Gottschlich 表示,“在調(diào)試上花費的大量時間被節(jié)省,從而使我們能夠加速技術(shù)進(jìn)步。”
ControlFlag 等 AI 驅(qū)動的編碼工具以及代碼補全工具 Tabnine、代碼測試工具 Ponicode、代碼安全審核工具 Snyk 和代碼審查軟件 DeepCode 等平臺會減少開發(fā)人員之間代價高昂的交互,例如問答環(huán)節(jié)和重復(fù)的代碼審查反饋。國際商業(yè)機器公司(IBM)和人工智能公司 OpenAI 致力于研究機器學(xué)習(xí)在軟件開發(fā)領(lǐng)域的應(yīng)用,是潛力十足的眾多公司之二。但研究顯示,實現(xiàn)零人工干預(yù)有很長的路要走,才可以代替許多需要程序員定期執(zhí)行的任務(wù)。
結(jié)論:ControlFlag 開源,工具認(rèn)可度等待“檢驗”
ControlFlag 測試過程中發(fā)現(xiàn)的錯誤被開發(fā)人員認(rèn)可,展示了機器編程工具在軟件開發(fā)領(lǐng)域的廣闊前景。
英特爾機器編程研究團隊專注于提高軟件質(zhì)量和開發(fā)人員生產(chǎn)力。開源 ControlFlag 后,將進(jìn)一步致力于實現(xiàn)零人工干預(yù)。針對提高軟件開發(fā)領(lǐng)域的成本、效率問題,眾多代碼測試、補全、審核工具上線,多個頭部玩家在機器編程研究領(lǐng)域共同努力,將進(jìn)一步提高軟件開發(fā)領(lǐng)域的準(zhǔn)確率、安全性。