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