Facebook’s TransCoder - Dùng AI để chuyển đổi CODE từ ngôn ngữ này sang ngôn ngữ khác - Coder Mart

Facebook’s TransCoder – Dùng AI để chuyển đổi CODE từ ngôn ngữ này sang ngôn ngữ khác

facebook transcoder

Sử dụng hơn 2,8 triệu open-source code trên Github, Facebook’s TransferCoder có thể chuyển đổi source code giữa ba ngôn ngữ lập trình C++, Java và Python.

Giới thiệu về TransCoder

Mới đây, các nhà nghiên cứu tại Facebook vừa phát triển thành công một hệ thống AI (Trí tuệ nhân tạo) mới nó có thể chuyển đổi source code giữa các ngôn ngữ lập trình khác nhau.

Nguồn: https://arxiv.org/pdf/2006.03511.pdf

Hệ thống này được gọi là TransCoder, công cụ chuyển đổi này có thể chuyển đổi source code giữa ba ngôn ngữ C++, Java và Python với độ chính xác cao.

Từ trước đến nay, việc chuyển đổi bộ source code từ ngôn ngữ lập trình này sang ngôn ngữ khác được xem là khá khó khăn ngay cả đối với những lập trình viên nhiều kinh nghiệm. Khó khăn ở đây là chúng ta phải có kiến thức đủ sâu về cả 2 ngôn ngữ thì mới phiên dịch được, và điều đó cũng khiến việc phiên dịch này trở nên khá đắt đỏ.

Trước đây công ty The Commonwealth Bank of Australia đã chi gần 750 triệu đô và mất gần 5 năm để chuyển toàn bộ mã nguồn của họ từ ngôn ngữ COBOL sang Java. Đó là 1 con số khổng lồ cả về mặt thời gian và tiền bạc.

Vì vậy, hệ thống TransCoder được sinh ra nhằm giảm thiểu tối đa thời gian và chi phí trong việc chuyển đổi mã nguồn. Tiếp theo chúng ta hãy tìm hiểu sơ về model của hệ thống này nhé.

Cách thức hoạt động

Hiện tại, các phần mềm chuyển đổi source code đang hoạt động dựa trên model là Abstract Syntax Tree (AST). AST sẽ biến chuyển và chuyển đổi sang ngôn ngữ lập trình cần thiết. Việc tạo ra process biến đổi này đang tốn rất nhiều thời gian.

Nắm được thế mạnh của AI, các nhà nghiên cứu của Facebook đã tiếp cận và sử dụng công nghệ Unsupervised Learning (Học tập không giám sát). AI model đã học dựa trên 2.8 triệu mã nguồn mở từ Github để biến đổi code từ ngôn ngữ này sang ngôn ngữ khác. Những từ khóa lập trình từ nhiều ngôn ngữ khác nhau sẽ được mã hóa và kiểm tra tính tương đồng.

Theo tài liệu chính thức của trang TransCoder, hệ thống chuyển đổi này hoạt động dựa trên 3 nguyên tắc chính:

  • Đầu tiên là khởi tạo sự tương đồng chéo giữa các ngôn ngữ lập trình. Kết quả là các hàm, các từ khóa sẽ ở các ngôn ngữ khác nhau sẽ ánh xạ cùng 1 ý nghĩa. Ví dụ: dù khác nhau về mặt cú phát nhưng System.out.print(“Hello World”); Console.WriteLine(“Hello World”); và print(“Hello World”) đểu thể hiện chung 1 ý nghĩa là in ra dòng chữ Hello World 
  • Tiếp theo hệ thống sẽ cố gắng mã hóa mã nguồn sao cho hợp lệ đúng syntax dù mặc dù có vẻ không đúng function hoặc đôi khi build không được.
  • Cuối cùng hệ thống sẽ mã hóa ngược lại về ngôn ngữ gốc và dùng kết quả đó để so sánh với mã nguồn gốc. Điều đó giúp cho TransCoder học tập và so sánh song song với dữ liệu gốc

Kết quả

Theo kết quả Unit Test cho thấy, việc chuyển đổi từ ngôn ngữ Java sang C++ mang lại hiệu quả cao nhất, tỉ lệ chính xác: 91,6%

Bảng kết quả TransCoder

Tương lai của chúng ta

Sự ra đời của AI Trí tuệ nhân tạo vừa tạo nên sự thú vị nhưng cũng không kém phần đáng sợ. AI có thể cải thiện những trải nghiệm của có người và trở thành 1 phần của cuộc sống chúng ta. Nó giúp chúng ta kết nối và giao tiếp tốt hơn với nhau. Nó giúp đỡ chúng ta trong các công việc khó khăn và nguy hiểm.

Trong tương lai, với sự phát triển của sự phiên dịch này, lập trình viên có thể xây dựng 1 phần mềm trên nhiều ngôn ngữ, nhiều nền tảng chỉ cần 1 source code. AI sẽ làm những việc còn lại

Nhưng cũng có thể nó sẽ làm chúng ta mất việc vì nó đã làm quá tốt công việc lập trình.

Trả lời