人工智慧能翻譯語言了:Facebook'TransCoder AI'在Java,Python和C ++之間轉換程式碼

banq發表於2020-06-12

Facebook研究人員還開發了一種名為TransCoder AI的“神經編譯器” 。它是一個可以在Java,Python和C ++等高階語言之間轉換程式碼的系統。將現有的程式碼庫遷移到更現代或更高效的語言需要大量的資源,包括財務和人力。從理論上講,轉編譯器可以幫助消除從頭重寫程式碼所需的費用。

但是,由於源語言和目標語言都具有不同的語法,變數型別,標準庫函式和平臺API,因此在實踐中很難構建它們。

TransCoder AI:適用於任何程式語言的程式碼轉換器

Facebook的TransCoder AI通過無監督的學習方法來應對這些挑戰。它可以在無人監督的情況下不受監督地執行,從而在沒有標籤的情況下在資料集中找到未檢測到的模式,並且以“顯著”的優勢勝過基於規則的基準。

無論使用哪種程式語言,神經編譯器都可以將代表相同指令的程式碼段對映到相同程式碼段。

關於Facebook TransCoder的最好之處在於,它可以輕鬆地推廣到任何程式語言,並且不需要任何專業知識就可以將程式碼從一種程式語言轉換為另一種程式語言。

人工智慧能翻譯語言了:Facebook'TransCoder AI'在Java,Python和C ++之間轉換程式碼

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

為了評估TransCoder AI的效能,他們從GeeksforGeeks中選擇了852個C ++,Java和Python並行函式。GeeksforGeeks是一個流行的平臺,可教授問題解答並提供幾種程式語言的解決方案。

他們使用上述兩個資料,開發了一種稱為“計算精度”的新指標,該指標可檢查翻譯後的函式是否生成與源語言中相同的輸出和相同的輸入。

結果

這是AI轉換程式碼時獲得的結果的準確性水平

  • C ++到Java:74.8%
  • 從C ++到Python:67.2%
  • Java到C ++:91.6%
  • Java到Python:68.7%
  • 從Python到Java:56.1%
  • 從Python到C ++:57.8%

研究人員說,TransCoder AI已經展示出對每種語言(Java,Python和C ++)的語法及其資料結構的理解。它甚至可以設法在各種語言之間正確對齊庫,同時進行一些小的修改,例如在輸入中重新命名變數。

儘管Transcoder並非十分完美,因為它無法在程式碼生成過程中考慮某些變數型別。但是,它的效能確實優於重寫人類專家使用知識手動構建的規則的框架。

 

相關文章