CodeNet, một dự án của IBM dành cho hệ thống học máy 

Logo IBM

IBM tiết lộ gần đây dự án mới của anh ấy được gọi là "CodeNet" nhằm mục đích cung cấp cho các nhà nghiên cứu một tập dữ liệu để thử nghiệm với việc sử dụng các kỹ thuật máy học để tạo trình dịch từ ngôn ngữ lập trình này sang ngôn ngữ lập trình khác, cũng như trình tạo và phân tích mã.

CodeNet bao gồm một bộ sưu tập 14 triệu mẫu mã giải quyết 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ả các ngôn ngữ hiện đại như C ++, Java, Python và Go, cũng như kế thừa, bao gồm COBOL, Pascal và FORTRAN.

Doanh nhân người Mỹ nổi tiếng Marc Andreessen đã viết vào năm 2011. Nhanh chóng cho đến ngày nay: phần mềm được tìm thấy trong các dịch vụ tài chính và chăm sóc sức khỏe, điện thoại thông minh và nhà thông minh. Ngay cả ô tô bây giờ cũng có hơn 100 triệu dòng mã.

Các phát triển dự án được phát hành theo giấy phép Apache 2.0 và các tập dữ liệu dự kiến ​​sẽ được phát hành trong miền 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. Bộ đề xuất được cho là sẽ giúp đào tạo các hệ thống học máy và phát triển các đổi mới trong lĩnh vực dịch và phân tích mã tự động, bằng cách tương tự với cách cơ sở dữ liệu ImageNet của các hình ảnh có chú thích hỗ trợ sự phát triển của các hệ thống nhận dạng hình ảnh và thị giác nhân tạo. Các cuộc thi lập trình khác nhau được đề cập đến như một trong những nguồn chính để xây dựng bộ sưu tập.

Project CodeNet đặc biệt có thể thúc đẩy đổi mới thuật toán để trích xuất ngữ cảnh này bằng các mô hình theo trình tự, giống như những gì chúng tôi đã áp dụng trong ngôn ngữ của con người, để tạo ra một vết lõm đáng kể hơn trong hiểu biết của máy về mã hơn là xử lý mã máy.

Không giống như các trình dịch truyền thống dựa trên các quy tắc dịch thuật, hệ thống học máy 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 của con người. Chính việc thiếu nhận thức về ngữ cảnh đã ngăn không cho mã chuyển đổi từ các ngôn ngữ kế thừa như COBOL.

Sự hiện diện của một lượng lớn các triển khai thuật toán trong các ngôn ngữ khác nhau sẽ giúp tạo ra các hệ thống học máy phổ quát, thay vì dịch trực tiếp giữa các ngôn ngữ cụ thể, thao tác 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 biên dịch để dịch mã được truyền bằng bất kỳ ngôn ngữ nào được hỗ trợ thành biểu diễn trừu tượng bên trong của nó, từ đó có thể tạo mã bằng nhiều ngôn ngữ.

Bao gồm cả hệ thống bạn 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 COBOL cũ. Một trình biên dịch học máy có thể chuyển đổi mã COBOL sang biểu diễn Java và tùy ý dịch một đoạn mã Java trở lại mã COBOL.

Ngoài việc dịch giữa các ngôn ngữ, các lĩnh vực ứng dụng CodeNet được đề cập đến chẳng hạn như việc tạo ra các hệ thống tìm kiếm mã thông minh và tự động hóa phát hiện nhân bản, cũng như phát triển các trình tối ưu hóa và hệ thống sửa mã tự động.

Đặc biệt, Các ví dụ được trình bày trong CodeNet được cung cấp siêu dữ liệu mô tả kết quả của các bài kiểm tra hiệu suất, kích thước của chương trình kết quả, mức tiêu thụ bộ nhớ và trạng thái cho phép phân biệt mã chính xác với mã sai (để phân biệt mã đúng với mã sai, các ví dụ có lỗi được đưa vào bộ sưu tập đặc biệt, có tỷ lệ chia sẻ là 29,5 (XNUMX%).

Hệ thống học máy có thể tính đến siêu dữ liệu này để tạo mã tối ưu nhất hoặc để phát hiện các hồi quy trong mã được phân tích (hệ thống có thể hiểu rằng thuật toán không được triển khai tối ưu trong mã được truyền hoặc chứa lỗi).

Cuối cùng Nếu bạn muốn tìm hiểu thêm về CodeNet, bạn có thể kiểm tra các chi tiết Trong liên kết sau.


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.