日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Facebook 发布神经编译器 TransCoder AI:可在 Java、Python、C++ 之间转换代码

發(fā)布時(shí)間:2023/11/22 综合教程 45 生活家
生活随笔 收集整理的這篇文章主要介紹了 Facebook 发布神经编译器 TransCoder AI:可在 Java、Python、C++ 之间转换代码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Facebook 研究人員表示,他們已經(jīng)開發(fā)出了一種名為TransCoder AI 的 “神經(jīng)編譯器” ,該系統(tǒng)可以將代碼從一種高級編程語言(如 C ++、Java 和 Python)轉(zhuǎn)換為另一種。

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

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

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

TransCoder AI 的準(zhǔn)確性

Facebook 研究人員在超過 280 萬個(gè)開源存儲庫中的公開代碼上對 TransCoder AI 進(jìn)行了訓(xùn)練,以專注于功能級別的代碼轉(zhuǎn)換。

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

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

結(jié)果

這是 AI 從以下位置轉(zhuǎn)換代碼時(shí)獲得的結(jié)果的準(zhǔn)確性水平:

  • 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ù)結(jié)構(gòu)的理解。它甚至能夠正確地調(diào)整每種語言的庫,同時(shí)適應(yīng)小的修改 -- 例如,重命名輸入中的一個(gè)變量。盡管 Transcoder 并非十分完美,無法在代碼生成過程中考慮某些變量類型。但是,它的性能確實(shí)優(yōu)于已有的利用專家知識手動(dòng)構(gòu)建的框架。

完整論文地址:https://arxiv.org/pdf/2006.03511.pd

總結(jié)

以上是生活随笔為你收集整理的Facebook 发布神经编译器 TransCoder AI:可在 Java、Python、C++ 之间转换代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。