文/陳根
機(jī)器時(shí)代下計(jì)算機(jī)編程顯得尤為熱門,但事實(shí)上,計(jì)算機(jī)編程一直都不是件容易的事。最初程序員是在圖紙上手寫程序,然后再把符號轉(zhuǎn)換成計(jì)算機(jī)能夠處理的一大堆穿孔卡片。只要有一個(gè)標(biāo)記放錯(cuò)了地方,整個(gè)程序就得重寫,而bug即便成了程序員的家常便飯,也依舊屢見屢崩潰。
如今,程序員可以使用一系列高效的工具來自動(dòng)化大部分工作,它們可以在鍵入時(shí)查找錯(cuò)誤,也可以在部署前測試代碼。但還是有許多方面幾乎沒有改變。一個(gè)愚蠢的錯(cuò)誤仍然會(huì)整個(gè)軟件崩潰,現(xiàn)在的系統(tǒng)越來越復(fù)雜,追蹤這些漏洞也越來越困難。隨著硬件和軟件系統(tǒng)越來越復(fù)雜,再加上開發(fā)硬件和軟件系統(tǒng)所需的程序員的儲(chǔ)備,讓機(jī)器編碼的開發(fā)成了多年來的研究熱點(diǎn)。
近日,來自英特爾、麻省理工學(xué)院和喬治亞理工學(xué)院的研究人員宣布了一種新的機(jī)器編程系統(tǒng),旨在檢測代碼的相似性。機(jī)器推斷代碼相似性(MISIM)系統(tǒng)是一個(gè)自動(dòng)引擎,能夠確定兩段代碼、算法的數(shù)據(jù)結(jié)構(gòu)何時(shí)執(zhí)行相同或相似的任務(wù)。
研究人員解釋說,MISIM不同于其他代碼相似性系統(tǒng),因?yàn)樗褂昧松舷挛母兄Z義結(jié)構(gòu)(CASS),它提供了更多關(guān)于代碼做什么的洞察,而不僅僅是它是如何做的。其他類似的代碼系統(tǒng)嘗試確定相似的特性或相似的目標(biāo),而MISIM可以確定執(zhí)行類似計(jì)算的代碼。而這是邁向機(jī)器編程更宏偉愿景的重要一步。
此外,MISIM不需要編譯器將人類可讀的源doe轉(zhuǎn)換為計(jì)算機(jī)可執(zhí)行的機(jī)器代碼。這將給現(xiàn)有的系統(tǒng)帶來很多好處,包括能夠在開發(fā)人員當(dāng)前編寫的不完整代碼片段上執(zhí)行——這對于推薦系統(tǒng)或自動(dòng)修復(fù)錯(cuò)誤來說是一個(gè)重要的實(shí)用特性。
一旦代碼的結(jié)構(gòu)被集成到CASS中,神經(jīng)網(wǎng)絡(luò)系統(tǒng)就會(huì)根據(jù)代碼的設(shè)計(jì)任務(wù),對代碼進(jìn)行相似性評分。換句話說,如果兩段代碼在結(jié)構(gòu)上看起來非常不同,但執(zhí)行的功能相同,那么神經(jīng)網(wǎng)絡(luò)會(huì)將它們評為基本相似。研究人員還表示,MISIM能夠比先前的系統(tǒng)更準(zhǔn)確地識(shí)別出類似的代碼片段。
研究人員表示,接下來計(jì)劃擴(kuò)展解決方案的功能集,開發(fā)代碼推薦引擎,并與其他軟件團(tuán)隊(duì)合作,看看如何將MISIM集成到日常開發(fā)中。而這對于各大程序員或者程序員日漸光潔的額頭來說或許都是一大福音。
聯(lián)系客服