計(jì)算機(jī)編程從未如此簡(jiǎn)單。
最初,程序員用手編寫程序,將符號(hào)寫到方格紙上,然后將它們穿孔打卡,計(jì)算機(jī)才可以對(duì)其進(jìn)行處理。如果有一個(gè)標(biāo)記不準(zhǔn)確,整個(gè)過程可能需要重做。
如今,程序員使用了一系列功能強(qiáng)大的工具,可自動(dòng)完成大部分工作。但是如果出現(xiàn)一個(gè)愚蠢的 bug 仍然可能使整個(gè)軟件崩潰,隨著系統(tǒng)變得越來越復(fù)雜,跟蹤這些 bug 變得越來越困難。
最近,英特爾科學(xué)家與麻省理工學(xué)院(MIT),以及佐治亞理工學(xué)院(Georgia Tech)的研究人員共同推出了一種新的機(jī)器編程(MP)系統(tǒng)——機(jī)器推斷代碼相似性(MISIM)。該系統(tǒng)是一種自動(dòng)引擎,旨在通過研究代碼的結(jié)構(gòu),并分析具有類似行為的其他代碼的句法差異來學(xué)習(xí)某個(gè)軟件計(jì)劃執(zhí)行的操作。
MISIM系統(tǒng)的性能要比當(dāng)前最先進(jìn)的系統(tǒng)高出40倍,可以看出從代碼推薦到自動(dòng)錯(cuò)誤修復(fù)的應(yīng)用前景。
MISIM:提高開發(fā)效率,性能是最先進(jìn)相似性系統(tǒng)的40倍
隨著異構(gòu)計(jì)算的興起,硬件和軟件系統(tǒng)變得越來越復(fù)雜。這種復(fù)雜性,再加上缺乏能夠在多種體系結(jié)構(gòu)中以專家水平進(jìn)行編程的程序員,使得人們對(duì)新開發(fā)方法的需求日益凸顯。
多年來,自動(dòng)代碼生成一直是研究的熱點(diǎn)。微軟正在將基本的代碼生成構(gòu)建到其廣泛使用的軟件開發(fā)工具中。
Facebook 開發(fā)了一個(gè)名為 Aroma 的系統(tǒng),該系統(tǒng)可以自動(dòng)完成小程序,而 DeepMind 開發(fā)的神經(jīng)網(wǎng)絡(luò)可以提供比人類設(shè)計(jì)的更有效的簡(jiǎn)單算法版本。甚至 OpenAI 的 GPT-3 語言模型也可以從自然語言提示中生成簡(jiǎn)單的代碼段。
機(jī)器編程是英特爾實(shí)驗(yàn)室和麻省理工學(xué)院在「The Three Pillars of Machine Programming」論文中提出的一個(gè)術(shù)語 ,旨在通過使用自動(dòng)化工具來提高開發(fā)效率。
這些新興機(jī)器編程工具中的一項(xiàng)關(guān)鍵技術(shù)是代碼相似性,它能準(zhǔn)確有效地自動(dòng)化某些軟件開發(fā)過程來滿足這一需求。
然而,建立精確的代碼相似性系統(tǒng)是一個(gè)尚未解決的問題。這些系統(tǒng)試圖確定兩個(gè)代碼片段是否顯示出相似的特征或旨在達(dá)到相似的目標(biāo)。當(dāng)僅學(xué)習(xí)源代碼時(shí),這是一項(xiàng)艱巨的任務(wù)。
因此, 研究人員提出了機(jī)器推斷代碼相似性(MISIM),這是一種全新的端到端代碼相似性系統(tǒng)。MISIM 可以準(zhǔn)確推斷兩段代碼何時(shí)執(zhí)行相似的計(jì)算,即使這兩段代碼使用不同的數(shù)據(jù)結(jié)構(gòu)和算法。
英特爾實(shí)驗(yàn)室首席科學(xué)家兼機(jī)器編程研究總監(jiān) Justin Gottschlich 表示,「這是邁向更宏偉的機(jī)器編程愿景的重要一步。」
MISIM 與現(xiàn)有代碼相似性系統(tǒng)之間的核心區(qū)別在于其新穎的上下文感知語義結(jié)構(gòu)(CASS),其目的是了解代碼的實(shí)際作用,可以幫助從代碼語法中提升語義含義。
與其他現(xiàn)有方法不同,它可以將 CASS 配置為特定的上下文,從而使其可以捕獲更高級(jí)別描述代碼的信息。CASS 可以提供有關(guān)代碼功能而非方法的更具體的見解。
此外,MISIM 無需使用編譯器即可對(duì)代碼進(jìn)行評(píng)級(jí),編譯器將人類可讀的源代碼轉(zhuǎn)換為計(jì)算機(jī)可執(zhí)行的機(jī)器代碼。
與現(xiàn)有系統(tǒng)相比,MISIM 還具有許多優(yōu)勢(shì),包括能夠在開發(fā)人員當(dāng)前正在編寫的不完整代碼段上執(zhí)行的能力,這是推薦系統(tǒng)或自動(dòng)錯(cuò)誤修復(fù)的重要實(shí)用特征。
MISIM系統(tǒng)總攬
MISIM 提供了基于神經(jīng)的代碼相似性評(píng)分算法,該算法可通過具有學(xué)習(xí)參數(shù)的各種神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)來實(shí)現(xiàn)。
一旦將代碼的結(jié)構(gòu)集成到 CASS 中,神經(jīng)網(wǎng)絡(luò)系統(tǒng)就會(huì)根據(jù)其設(shè)計(jì)要執(zhí)行的工作,為代碼片段提供相似性評(píng)分。
換句話說,如果兩段代碼在結(jié)構(gòu)上看起來有很大不同,但執(zhí)行相同的功能,則神經(jīng)網(wǎng)絡(luò)會(huì)將它們?cè)u(píng)為大致相似。
研究人員最后將 MISIM 與三個(gè)最新的檢測(cè)代碼相似性系統(tǒng)進(jìn)行了比較:
(i)code2vec
(ii)Neural Code Comprehension
(iii) Aroma
通過將這些原理整合到一個(gè)統(tǒng)一的系統(tǒng)中,研究人員發(fā)現(xiàn)MISIM能夠比當(dāng)前的最新系統(tǒng)更準(zhǔn)確地識(shí)別相似的代碼,最多可識(shí)別40倍。
從研究到演示:代碼推薦,大幅削減開發(fā)成本
盡管英特爾仍在擴(kuò)展 MISIM 的功能集,但公司已將其從研究工作轉(zhuǎn)移到了演示工作,目的是創(chuàng)建一個(gè)代碼推薦引擎,以協(xié)助所有軟件開發(fā)人員能夠跨英特爾各種異構(gòu)體系結(jié)構(gòu)進(jìn)行編程。
這種類型的系統(tǒng)將能夠識(shí)別開發(fā)人員輸入的簡(jiǎn)單算法背后的意圖,并提供語義上相似但性能有所提高的候選代碼。
Gottschlich 表示,「我想,如果有可能,大多數(shù)開發(fā)人員會(huì)很樂意讓機(jī)器為他們查找并修復(fù)錯(cuò)誤」。
這可以為雇主省去一些麻煩,更不用說幫助開發(fā)人員自己了。
根據(jù)劍橋大學(xué) Judge 商學(xué)院發(fā)表的一項(xiàng)研究,程序員將50.1%的工作時(shí)間用于編程,而將一半的時(shí)間用于調(diào)試。估計(jì)每年的調(diào)試總費(fèi)用為3120億美元。可以看出,這需要消耗大量精力和財(cái)力。
英特爾機(jī)器編程實(shí)驗(yàn)室還與英特爾的軟件部門合作,以了解如何將 MISIM 集成到他們的日常開發(fā)中。像 MISIM 這樣的以AI為動(dòng)力的代碼推薦和審查工具有望大幅削減開發(fā)成本,同時(shí)使編碼人員能夠?qū)W⒂诟邉?chuàng)造性、更少重復(fù)性的任務(wù)。
Gottschlich 在一次采訪時(shí)表示,「如果我們?cè)跈C(jī)器編程方面取得成功,最終目標(biāo)之一就是使所有人能夠創(chuàng)建軟件。」
責(zé)編AJX
-
編程
+關(guān)注
關(guān)注
88文章
3626瀏覽量
93799 -
MIT
+關(guān)注
關(guān)注
3文章
253瀏覽量
23413 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8423瀏覽量
132755
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論