Công cụ mới của MIT tự động viết lại đoạn code cũ cho phần mềm mới

Việc viết phần mềm máy tính đòi hỏi nhiều bước cắt - dán. Nó cũng chỉ là một phần của quy trình làm việc thông thường - tìm cách giải quyết trên Google, sao chép từ Stack Overflow (hay một nguồn nào khác) và đưa vào đoạn code. Bước cuối cùng sẽ gồm vài thao tác chỉnh sửa, viết lại, debug.

Đầu tháng này, một nhóm các nhà nghiên cứu khoa học tại CSAIL Lab của MIT tiết lộ một hệ thống mới giúp tự động đưa đoạn mã từ một chương trình này sang chương trình khác.

Công cụ có tên CodeCarbonCopy (CCC) làm việc bằng cách so sánh việc thực thi của 2 phần mềm, sau đó cập nhật tên biến, biểu diễn dữ liệu bằng mã nguồn. Ví dụ như nếu chương trình gốc gọi biến là x thì CodeCarbonCpy sẽ tìm và thay các biến trong đoạn mã mới bằng tên x.

Công việc nghe có vẻ bình thường nhưng đòi hỏi những hiểu biết cơ bản về việc mỗi phần mềm thực sự làm gì, như một biến có ý nghĩa gì trong một ngữ cảnh nhất định và phần mềm sử dụng nó ra sao.

Tương tự với biểu diễn dữ liệu. Đây là vấn đề rất thú vị. CCC giải quyết bằng cách đưa cho mỗi phần mềm cùng một tập tin đầu vào và xem mỗi cái sẽ làm gì. Kết quả là biểu tượng đại diện của mỗi giá trị mà hai phần mềm tính toán ra.

Chuyển đoạn code từ phần mềm này sang phần mềm khác tự động bằng CCC
Chuyển đoạn code từ phần mềm này sang phần mềm khác tự động bằng CCC

Ngoài ra, CCC cũng có khả năng phát hiện chức năng trong đoạn code được dùng bởi phần mềm nhận cốt mà vốn phần mềm gốc không dùng vào việc gì.

Nhóm MIT đã thử nghiệm với 8 lần chuyển code giữa 6 phần mềm, trong đó có VLC, mtPaint và MPlayer. Trong 7 lần chuyển, chức năng được giữ thành công trong quá trình chuyển. Ở lần thứ 8 từ mtPaint sang bmp2tiff, CCC không thể làm việc do có một số cấu trúc dữ liệu lạ.

Có một giai thoại vẫn truyền tai nhau giữa các nhà phát triển về tự động hóa, đó là chúng ta sẽ sớm outsource để những chiếc máy lập trình. CCC khi đó sẽ không phải tin tốt nữa. Nhưng giờ đây hãy yên tâm là hệ thống vẫn cần con người can thiệp.

Con người sẽ phải xác định đoạn mã sẽ được chuyển từ chương trình gốc và chức năng cần được chuyển. CCC cũng mất khá nhiều thời gian để làm việc, thời gian lâu nhất khi thử nghiệm là 12 phút.

Thứ Năm, 28/09/2017 16:06
51 👨 1.317
0 Bình luận
Sắp xếp theo