IBM mở CodeNet cho các hệ thống máy học dịch và xác minh mã

IBM đã tiết lộ sáng kiến ​​CodeNet của mình, nhằm mục đích cung cấp cho các nhà nghiên cứu một bộ dữ liệu cho phép họ thử nghiệm việc sử dụng các kỹ thuật học máy để tạo ra các trình dịch ngôn ngữ lập trình, trình tạo mã và trình phân tích. CodeNet bao gồm một bộ sưu tập 14 triệu mẫu mã giải quyết được 4053 vấn đề lập trình phổ biến. Tổng cộng, bộ sưu tập chứa khoảng 500 triệu dòng mã và bao gồm 55 ngôn ngữ lập trình, cả ngôn ngữ hiện đại như C++, Java, Python và Go cũng như các ngôn ngữ kế thừa bao gồm COBOL, Pascal và FORTRAN. Các phát triển của dự án được phân phối theo giấy phép Apache 2.0 và các bộ dữ liệu dự kiến ​​sẽ được phân phối dưới dạng phạm vi công cộng.

Các ví dụ được chú thích và triển khai các thuật toán giống hệt nhau trong các ngôn ngữ lập trình khác nhau. Dự kiến ​​​​bộ đề xuất sẽ giúp đào tạo các hệ thống máy học và phát triển các đổi mới trong lĩnh vực dịch thuật và phân tích mã máy, tương tự như cách cơ sở dữ liệu hình ảnh có chú thích ImageNet đã giúp phát triển hệ thống nhận dạng mẫu và thị giác máy tính. Các cuộc thi lập trình khác nhau được coi là một trong những nguồn hình thành bộ sưu tập chính.

Không giống như các trình dịch truyền thống được triển khai dựa trên các quy tắc dịch, hệ thống máy học có thể nắm bắt và tính đến bối cảnh sử dụng mã. Khi chuyển đổi từ ngôn ngữ lập trình này sang ngôn ngữ lập trình khác, ngữ cảnh cũng quan trọng như khi dịch từ ngôn ngữ này sang ngôn ngữ khác. Việc thiếu cân nhắc ngữ cảnh này chính là nguyên nhân ngăn cản việc chuyển đổi mã từ các ngôn ngữ cũ như COBOL.

Việc có một cơ sở dữ liệu lớn về việc triển khai thuật toán bằng các ngôn ngữ khác nhau sẽ giúp tạo ra các hệ thống máy học phổ quát, thay vì dịch trực tiếp giữa các ngôn ngữ cụ thể, sẽ thao tác một cách biểu diễn mã trừu tượng hơn, độc lập với các ngôn ngữ lập trình cụ thể. Một hệ thống như vậy có thể được sử dụng như một trình dịch, dịch mã được truyền bằng bất kỳ ngôn ngữ nào được hỗ trợ sang dạng biểu diễn trừu tượng bên trong của nó, từ đó mã có thể được tạo bằng nhiều ngôn ngữ.

Hệ thống cũng sẽ có thể thực hiện các phép biến đổi hai chiều. Ví dụ: các ngân hàng và cơ quan chính phủ tiếp tục sử dụng các dự án bằng ngôn ngữ COBOL đã lỗi thời. Trình dịch dựa trên máy học sẽ có thể chuyển đổi mã COBOL thành dạng biểu diễn Java và nếu cần, dịch đoạn Java trở lại thành mã COBOL.

Ngoài việc dịch giữa các ngôn ngữ, các lĩnh vực ứng dụng của CodeNet như tạo ra hệ thống tìm kiếm mã thông minh và tự động phát hiện bản sao cũng như phát triển trình tối ưu hóa và hệ thống sửa mã tự động cũng được đề cập. Đặc biệt, các ví dụ được trình bày trong CodeNet được trang bị siêu dữ liệu mô tả kết quả kiểm tra hiệu suất, kích thước chương trình kết quả, mức tiêu thụ bộ nhớ và trạng thái, cho phép chúng tôi phân biệt mã đúng với mã có lỗi (để phân biệt mã đúng với mã không chính xác, bộ sưu tập đặc biệt bao gồm các ví dụ có lỗi, tỷ lệ trong đó là 29.5%). Hệ thống máy học có thể tính đến siêu dữ liệu này để tạo mã tối ưu nhất hoặc xác định hồi quy trong mã được phân tích (hệ thống có thể hiểu rằng thuật toán trong mã đã gửi không được triển khai tối ưu hoặc có lỗi).

Nguồn: opennet.ru

Thêm một lời nhận xét