臉書開發了一個稱為TransCoder的自我監督神經原始碼翻譯器(Transcompiler),可以將程式碼轉換成為另一種程式語言的程式碼,這樣將使得程式碼移植更加簡單快速。

臉書舉例,要把像是COBOL這類較舊的程式語言,搬遷到Java和C++等較現代的語言,並非一件簡單的任務,需要付出大量的時間與勞力,而且還同時需要具備來源語言以及目標語言的專業,目前許多企業和政府部門的大型主機系統仍廣泛使用COBOL,並且繼續維護老舊的程式碼庫。

而臉書開發的這個原始碼翻譯器,有望能夠讓老舊程式碼移植工作變得簡單,TransCoder使用完全自我監督的神經網路開發而成,臉書表示,TransCoder是第一個不需要平行資料訓練的人工智慧系統,就可以將程式碼從一種語言,轉換到另外一種語言,現在TransCoder能將函式程式碼,在C++、Java以及Python 3三個語言間轉換。

經臉書評估,TransCoder比當前開源和商業基於規則的轉換程式,效能都還要好。TransCoder將Java函式翻譯成C++的正確率達90%,將C++函式翻譯成為Java的正確率為74.8%,而市售工具將將C++函式翻譯成為Java的正確率為61%,而開源工具將Java函式翻譯成C++的正確率僅有38.3%。

臉書提到,自我監督訓練對於程式語言之間的翻譯相當重要,傳統的監督式學習法,仰賴大規模平行資料的訓練,但是無論是從COBOL到C++,或是C++到Python等,都沒有類似的資料集。而TransCoder只需要用一種程式語言編寫的程式碼,不需要使用來源語言與目標語言的相同程式碼範例,因此能夠輕易的擴充支援的語言。

TransCoder或許對於將老舊的程式碼庫,更新成現代程式語言可以幫上不少忙,臉書認為,自動翻譯程式碼可以使企業,更容易地使用開源專案,因為透過將老舊程式碼翻譯成為其他語言,就能夠整合其他開源專案的程式碼,而且現代程式語言通常效能較好,也就容易維護。


熱門新聞

Advertisement