แนวคิดหลัก
本文介紹了一種名為 AlphaTrans 的神經符號方法,用於自動化儲存庫級別的程式碼翻譯和驗證,該方法通過將程式分解成片段並按反向呼叫順序進行翻譯和驗證,有效地解決了程式碼翻譯過程中面臨的複雜性和規模問題。
這篇研究論文介紹了 AlphaTrans,一種用於自動化儲存庫級別程式碼翻譯和驗證的神經符號方法。
研究目標
本研究旨在解決現有程式碼翻譯技術的局限性,這些技術難以處理真實世界專案的規模和複雜性,特別是在跨語言程式設計範例、類型系統和記憶體管理方面的差異。
方法
AlphaTrans 採用組合式方法,利用靜態分析將原始碼分解成更小的片段,並按反向呼叫順序進行翻譯。它使用大型語言模型 (LLM) 來翻譯程式碼片段,並採用多級驗證來確保翻譯後的程式碼保留原始程式的功能。
主要發現
AlphaTrans 成功翻譯了十個真實世界的開源專案,這些專案包含總共 6,899 個原始碼片段。
99.1% 的翻譯後的程式碼片段在語法上是正確的。
AlphaTrans 驗證了 25.8% 的翻譯結果的執行時行為和功能正確性。
平均而言,整合的翻譯和驗證過程需要 36 小時才能翻譯一個專案,展現了其在實踐中的可擴展性。
主要結論
AlphaTrans 是第一個翻譯整個儲存庫(包括測試)並生成經過驗證的翻譯結果(考慮到現有測試)的技術。與僅使用 GPT-4 進行儲存庫級別翻譯的嘗試(將 Apache Commons CLI 從 Java 翻譯成 Python)相比,AlphaTrans 翻譯了整個儲存庫,產生了 99% 的語法正確和 70.7% 的功能驗證程式碼。
意義
本研究為自動化程式碼翻譯和驗證領域做出了重大貢獻,為開發人員提供了將應用程式現代化並提高其可維護性和可靠性的有效方法。
局限性和未來研究
AlphaTrans 目前僅支援從 Java 到 Python 的翻譯。
未來的工作包括支援更多程式語言、改進驗證技術以及減少人工參與。
สถิติ
AlphaTrans 成功翻譯了十個真實世界的開源專案,這些專案包含總共 6,899 個原始碼片段。
99.1% 的翻譯後的程式碼片段在語法上是正確的。
AlphaTrans 驗證了 25.8% 的翻譯結果的執行時行為和功能正確性。
平均而言,整合的翻譯和驗證過程需要 36 小時才能翻譯一個專案。
人工評估者平均在 20.1 小時內修復了 AlphaTrans 翻譯中的錯誤,並實現了所有測試通過。