您的位置: 首頁 >互聯(lián)網(wǎng) >

Facebook研究人員表示他們已經(jīng)開發(fā)出了一種名為TransCoder AI的神經(jīng)編譯器

2022-07-17 06:55:20 編輯:莘秀貝 來源:
導讀 將現(xiàn)有的代碼庫遷移到更現(xiàn)代或更高效的語言需要大量的資源,包括財務和人力。譬如,澳大利亞聯(lián)邦在 5 年的時間里花費了大約 7.5 億...

將現(xiàn)有的代碼庫遷移到更現(xiàn)代或更高效的語言需要大量的資源,包括財務和人力。譬如,澳大利亞聯(lián)邦在 5 年的時間里花費了大約 7.5 億澳元,將其平臺從 COBOL 轉換為 Java。而從理論上講,轉編譯器可以則幫助消除從頭重寫代碼所需的費用。但是,由于源語言和目標語言都具有不同的語法、變量類型、標準庫函數(shù)和平臺API,因此這個在實踐中其實很難構建。

據(jù)介紹,F(xiàn)acebook 的 TransCoder AI則采用了一種無監(jiān)督的學習方法來應對這些挑戰(zhàn)。它可以在無人監(jiān)督的情況下不受監(jiān)督地運行,從而在沒有標簽的情況下在數(shù)據(jù)集中找到未檢測到的模式,比基于規(guī)則數(shù)據(jù)集的模型要高效得多。

無論使用哪種編程語言,神經(jīng)編譯器都可以將代表相同指令的代碼段映射到相同代碼段。一位共同作者寫道:“ TransCoder 可以輕松地推廣到任何編程語言,不需要任何專業(yè)知識就可以將代碼從一種編程語言轉換為另一種編程語言,并且在很大程度上優(yōu)于商業(yè)解決方案。我們的結果表明,通過向解碼器添加簡單的約束以確保生成的函數(shù)在語法上是正確的,或者通過使用專用架構,可以輕松解決該模型所犯的許多錯誤。”

TransCoder AI 的準確性

Facebook 研究人員在超過 280 萬個開源存儲庫中的公開代碼上對 TransCoder AI 進行了訓練,以專注于功能級別的代碼轉換。

為了評估 TransCoder AI 的性能,他們從 GeeksforGeeks 中選擇了 852 個 C ++、Java 和 Python 并行函數(shù)。GeeksforGeeks是一個 在線平臺,用于收集編寫代碼時的問題,并提供多種編程語言的解決方案。

利用以上兩個數(shù)據(jù),他們開發(fā)了一個名為 "計算精度(computational accuracy)"的新指標,用于檢查翻譯后的函數(shù)在輸入相同的情況下是否會產生與源語言相同的輸出。

結果

這是 AI 從以下位置轉換代碼時獲得的結果的準確性水平:

C++ to Java: 74.8%

C++ to Python: 67.2%

Java to C++: 91.6%

Java to Python: 68.7%

Python to Java: 56.1%

Python to C++: 57.8%

研究人員表示,TransCoder AI 已經(jīng)展示出對每種語言(Java、Python 和 C ++)的語法及其數(shù)據(jù)結構的理解。它甚至能夠正確地調整每種語言的庫,同時適應小的修改--例如,重命名輸入中的一個變量。盡管 Transcoder 并非十分完美,無法在代碼生成過程中考慮某些變量類型。 但是,它的性能確實優(yōu)于已有的利用專家知識手動構建的框架。


免責聲明:本文由用戶上傳,如有侵權請聯(lián)系刪除!

精彩推薦

圖文推薦

點擊排行

2016-2022 All Rights Reserved.平安財經(jīng)網(wǎng).復制必究 聯(lián)系QQ280 715 8082   備案號:閩ICP備19027007號-6

本站除標明“本站原創(chuàng)”外所有信息均轉載自互聯(lián)網(wǎng) 版權歸原作者所有。