人工智慧能翻譯語言了:Facebook'TransCoder AI'在Java,Python和C ++之間轉換程式碼
Facebook研究人員還開發了一種名為TransCoder AI的“神經編譯器” 。它是一個可以在Java,Python和C ++等高階語言之間轉換程式碼的系統。將現有的程式碼庫遷移到更現代或更高效的語言需要大量的資源,包括財務和人力。從理論上講,轉編譯器可以幫助消除從頭重寫程式碼所需的費用。
但是,由於源語言和目標語言都具有不同的語法,變數型別,標準庫函式和平臺API,因此在實踐中很難構建它們。
TransCoder AI:適用於任何程式語言的程式碼轉換器
Facebook的TransCoder AI通過無監督的學習方法來應對這些挑戰。它可以在無人監督的情況下不受監督地執行,從而在沒有標籤的情況下在資料集中找到未檢測到的模式,並且以“顯著”的優勢勝過基於規則的基準。
無論使用哪種程式語言,神經編譯器都可以將代表相同指令的程式碼段對映到相同程式碼段。
關於Facebook TransCoder的最好之處在於,它可以輕鬆地推廣到任何程式語言,並且不需要任何專業知識就可以將程式碼從一種程式語言轉換為另一種程式語言。
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並非十分完美,因為它無法在程式碼生成過程中考慮某些變數型別。但是,它的效能確實優於重寫人類專家使用知識手動構建的規則的框架。
相關文章
- C語言“字串-數字”之間的轉換C語言字串
- 人工智慧解讀唇語 不止能解碼語音和語言翻譯人工智慧
- java編碼之間轉換Java
- Python語言在人工智慧(AI)中的優勢Python人工智慧AI
- 硬核觀察 #795 首個可以翻譯無文字語言的口語翻譯 AIAI
- 華為雲招聘動物語言翻譯師?人工智慧還能這麼玩人工智慧
- AI來實現程式碼轉換!Python轉Java,Java轉Go不在話下?AIPythonJavaGo
- Python和JavaScript間程式碼轉換4個工具PythonJavaScript
- C語言---整型字串轉換C語言字串
- 聊聊C語言/C++—程式和程式語言C語言C++
- 翻譯 | 怎麼在Java中替換掉繁雜的if語句Java
- 中文程式語言中文程式語言實現:翻譯器
- 如何讓AI理解數學?Facebook神經網路透過「語言翻譯」求解數學難題AI神經網路
- 用XML實現程式語言間的互譯 (轉)XML
- Java之時間轉換Java
- JSON格式字串和物件之間的轉換程式碼JSON字串物件
- 『翻譯』JavaScript 函數語言程式設計JavaScript函數程式設計
- C語言高效程式設計的四大祕技之以空間換時間C語言程式設計
- binaascii:A Python 在二進位制和 ASCII 之間轉換ASCIIPython
- 人工智慧翻譯之間的對決:谷歌為什麼敗給了有道?人工智慧谷歌
- Java 中 CLOB 和字串之間的轉換Java字串
- c語言字串,數字轉換C語言字串
- C語言兩結構體之間的成員互換C語言結構體
- 多國語言程式設計之資源轉換 (轉)程式設計
- 使用google翻譯 api 翻譯中文成其他語言GoAPI
- 將你的 C 語言程式碼編譯成 .NET編譯
- [翻譯] Go 語言入門Go
- (翻譯)Dart語言概覽Dart
- java開發C語言編譯器:為C語言提供API呼叫JavaC語言編譯API
- 源語言、目標語言、翻譯器、編譯器、直譯器編譯
- java基本型別和物件之間的轉換Java型別物件
- 【譯】在 ASP.NET 和 ASP.NET Core 之間共享程式碼ASP.NET
- C+、Java、Python選擇哪個程式語言?JavaPython
- leetcode100題 題解 翻譯 C語言版 Python版LeetCodeC語言Python
- NodeJS 和 C++ 之間的型別轉換NodeJSC++型別
- string和byte[]之間的轉換 (C#)C#
- C語言程式碼區錯誤以及編譯過程C語言編譯
- 幽默之程式語言的能效:Java是最節能的語言之一, Python/Perl是最耗能之一。JavaPython