CodeNet, un proiect IBM pentru sisteme de învățare automată 

Sigla IBM

IBM a dezvăluit recent noul său proiect numit „CodeNet” care își propune să ofere cercetătorilor un set de date pentru a experimenta utilizarea tehnicilor de învățare automată pentru a crea traducători de la un limbaj de programare la altul, precum și generatoare și analizoare de cod.

CodeNet include o colecție de 14 milioane de mostre de cod care rezolvă 4053 probleme comune de programare. În total, colecția conține aproximativ 500 de milioane de linii de cod și acoperă 55 de limbaje de programare, atât limbaje moderne precum C ++, Java, Python și Go, cât și moștenire, inclusiv COBOL, Pascal și FORTRAN.

„Software-ul mănâncă lumea”, scria celebrul om de afaceri american Marc Andreessen în 2011. Avansăm până astăzi: software-ul se găsește în servicii financiare și asistență medicală, smartphone-uri și case inteligente. Chiar și mașinile au acum peste 100 de milioane de linii de cod.

Dezvoltările proiectului sunt lansate sub licența Apache 2.0, iar seturile de date vor fi lansate în domeniul public.

Exemplele sunt adnotate și implementează algoritmi identici în diferite limbaje de programare. Setul propus ar trebui să ajute la antrenarea sistemelor de învățare automată și la dezvoltarea inovațiilor în domeniul traducerii și analizei automate a codurilor, prin analogie cu modul în care baza de date ImageNet de imagini adnotate a ajutat la dezvoltarea sistemelor de recunoaștere a imaginilor și viziune artificială. Diverse concursuri de programare sunt menționate ca una dintre principalele surse de construcție a colecției.

Project CodeNet poate conduce în mod specific inovația algoritmică pentru a extrage acest context cu modele secvență cu secvență, la fel ca ceea ce am aplicat în limbajele umane, pentru a face o adâncime mai semnificativă în înțelegerea mașinii de cod, mai degrabă decât în ​​procesarea codului.

Spre deosebire de traducătorii tradiționali pe baza regulilor de traducere, sistemele de învățare automată pot capta și lua în considerare contextul utilizării codului. La conversia dintr-un limbaj de programare în altul, contextul este la fel de important ca atunci când traducem dintr-un limbaj uman în altul. Lipsa de conștientizare contextuală împiedică conversia codului din limbaje vechi, cum ar fi COBOL.

Prezența unei baze mari de implementări de algoritmi în diferite limbi va ajuta la crearea sistemelor universale de învățare automată care, în loc de traducere live între limbi specifice, manipulează o reprezentare mai abstractă a codului, independent de limbaje de programare specifice.

Un astfel de sistem poate fi folosit ca traducător care traduce codul transmis în oricare dintre limbile acceptate în reprezentarea sa abstractă internă, din care poate fi generat cod în multe limbi.

Inclusiv sistemul puteți efectua transformări bidirecționale. De exemplu, băncile și agențiile guvernamentale continuă să folosească proiecte moștenite COBOL. Un traducător de învățare automată poate converti codul COBOL în reprezentare Java și, în mod opțional, poate traduce înapoi un fragment Java în cod COBOL.

În plus față de traducerea între limbi, sunt menționate domeniile de aplicații CodeNet precum crearea de sisteme inteligente de căutare a codului și automatizarea detectării clonelor, precum și dezvoltarea de optimizatori și sisteme pentru corectarea automată a codului.

În special Exemplele prezentate în CodeNet sunt furnizate cu metadate care descriu rezultatele testelor de performanță, dimensiunea programului rezultat, consumul de memorie și starea care permite să distingem codul corect de codul eronat (pentru a distinge codul corect de codul incorect, exemplele cu erori sunt incluse în colecție, a căror pondere este de 29,5 , XNUMX%).

Un sistem de învățare automată poate lua în considerare aceste metadate pentru a genera cel mai optim cod sau pentru a detecta regresii în codul analizat (sistemul poate înțelege că algoritmul nu este implementat în mod optim în codul transmis sau conține erori).

În cele din urmă Dacă sunteți interesat să aflați mai multe despre CodeNet, puteți verifica detaliile În următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.