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