Facebook phát hành TransCoder AI chuyển đổi code giữa Java, Python và C ++

Administrator
Các nhà nghiên cứu của Facebook cho biết họ đã phát triển một "trình biên dịch" có tên là TransCoder AI, có thể chuyển đổi mã từ ngôn ngữ lập trình cấp cao (như C ++, Java và Python) sang ngôn ngữ khác.

Việc chuyển đổi mã nguồn từ ngôn ngữ lập trình cũ sang các ngôn ngữ hiện đại hơn hoặc hiệu quả hơn đòi hỏi nhiều nguồn lực, bao gồm cả tài chính và nhân lực.
Ngân hàng Commonwealth Úc đã chi khoảng 750 triệu đô la Úc và mất thời gian tới 5 năm để chuyển đổi nền tảng của mình từ COBOL sang Java. Về lý thuyết, trình biên dịch bộ chuyển mã có thể giúp giảm chi phí viết lại mã từ đầu. Tuy nhiên, vì ngôn ngữ nguồn và ngôn ngữ đích có các cú pháp, loại biến, chức năng thư viện chuẩn và nền tảng API khác nhau, nên quá trình biên dịch mã nguồn thực sự khó trong thực tế.

TransCoder AI của Facebook sử dụng phương pháp tự học không giám sát có thể đáp ứng những thách thức này. Trình biên dịch có thể chạy mà không có sự giám sát, do đó nó có thể tìm thấy các mẫu không được phát hiện trong tập dữ liệu không có nhãn, hiệu quả hơn nhiều so với mô hình dựa trên tập dữ liệu thông thường.

Bất kể ngôn ngữ lập trình nào trình biên dịch của Facebook đều có thể ánh xạ các đoạn mã cho cùng một lệnh cho cùng một đoạn mã. Một thành viên trong nhóm tác giả chia sẻ : "TransCoder AI có thể dễ dàng biên dịch sang bất kỳ ngôn ngữ lập trình nào, mà không cần bất kỳ kiến thức chuyên môn nào để chuyển đổi mã từ ngôn ngữ lập trình này sang ngôn ngữ lập trình khác . Trình biên dịch này tốt hơn nhiều so với các giải pháp thương mại khác. Kết quả chúng tôi thấy rằng, bằng cách thêm các ràng buộc đơn giản vào bộ giải mã giúp đảm bảo hàm được tạo đúng về mặt cú pháp hoặc bằng cách sử dụng kiến trúc chuyên dụng, nhiều lỗi mô hình có thể dễ dàng giải quyết. "

Các nhà nghiên cứu của Facebook đã huấn luyện AI của TransCoder về mã nguồn với kho hơn 2,8 triệu mã nguồn mở/


20200615221927_4635.jpg


Để đánh giá hiệu suất của TransCoder AI, họ đã thử nghiệm chọn 852 hàm C ++, Java và Python song song từ GeekforGeek. GeekforGeek là một nền tảng trực tuyến ,trang web chuyên về thuật toán hàng tỷ bài tập để luyện mã, thu thập các vấn đề khi viết mã và cung cấp giải pháp bằng nhiều ngôn ngữ lập trình.

Đây là mức độ chính xác kết quả thu được khi AI chuyển đổi mã từ:

C ++ sang Java: 74,8%

C ++ sang Python: 67,2%

Java sang C ++: 91,6%

Java sang Python: 68,7%

Python sang Java: 56,1%

Python sang C ++: 57,8%

TransCoder AI đạt được sự hiểu biết về cú pháp và cấu trúc dữ liệu của từng ngôn ngữ (Java, Python và C ++). Trình biên dịch này có thể điều chỉnh các thư viện cho từng ngôn ngữ một cách chính xác, thích ứng với các sửa đổi nhỏ như : đổi tên một biến trong đầu vào.

Mặc dù Transcoder AI hiện tại chưa thực sự hoàn hảo, một số loại biến nhất định không thể dịch trong quá trình tạo mã. Tuy nhiên, hiệu suất của nó thực sự vượt trội so với các giải pháp được xây dựng thủ công bằng kiến thức chuyên môn hiện có.
 
Trả lời

babylon88

Búa Gỗ Đôi
Liệu có cần thiết ...? Chỉ là cuộc chạy đua về công nghệ
React Native ---Facebook
Ms : Unity build Game đa nền tảng; Xamarin build ứng dụng
GG: Flutter build app ios; android(dark)
tiếp theo chờ Anh Táo thôi ( chắc cũng ko nhắm đến mấy cái này)