IBM a deschis CodeNet pentru sistemele de învățare automată care translează și verifică codul.

Compania IBM a lansat inițiativa CodeNet, care vizează furnizarea cercetătorilor a unui set de date pentru a experimenta utilizarea metodelor de învățare automată în crearea translatorilor între diferite limbaje de programare, precum și generatoare și analizatori de cod. CodeNet include o colecție de 14 milioane de exemple de cod care rezolvă 4053 de probleme tipice de programare. În total, colecția conține aproximativ 500 de milioane de linii de cod și acoperă 55 de limbaje de programare, inclusiv limbaje moderne precum C++, Java, Python și Go, dar și limbaje învechite, precum COBOL, Pascal și FORTRAN. Lucrările proiectului sunt distribuite sub licența Apache 2.0, iar seturile de date urmează să fie distribuite ca domeniu public.

Exemplele sunt însoțite de anotații și implementează algoritmi identici în diferite limbaje de programare. Se presupune că setul propus va ajuta la instruirea sistemelor de învățare automată și la dezvoltarea inovațiilor în domeniul traducerii și analizei automate a codului, similar cu modul în care baza de date cu imagini annotate ImageNet a sprijinit dezvoltarea sistemelor de recunoaștere a imaginilor și a viziunii artificiale. Ca una dintre sursele cheie ale formării colecției sunt menționate diverse competiții de programare.

Spre deosebire de translatorii tradiționali, implementați pe baza regulilor de transformare, sistemele de învățare automată pot captura și lua în considerare contextul utilizării codului. Atunci când se transformă un limbaj de programare în altul, contextul este la fel de important ca și atunci când se traduce dintr-o limbă umană în alta. Tocmai absența luării în considerare a contextului împiedică transformarea codului din limbaje vechi, cum ar fi COBOL.

Disponibilitatea unei baze mari de implementări de algoritmi în diverse limbaje va sprijini crearea de sisteme universale de învățare automată, care, în loc de o traducere directă între limbajele specifice, manipulează o reprezentare mai abstractă a codului, independentă de limbajele de programare specifice. Un asemenea sistem ar putea fi folosit ca translator, translatând codul furnizat într-o reprezentare internă abstractă, din care ar putea fi generat apoi cod în multiple limbaje.

Sistemul va putea, de asemenea, să efectueze conversii bidirecționale. De exemplu, în bănci și instituții guvernamentale continuă să fie utilizate proiecte scrise în limbajul învechit COBOL. Un traducător bazat pe un sistem de învățare automată va putea transforma codul în COBOL într-o reprezentare în Java, iar, dacă este necesar, să convertească un fragment din Java înapoi în codul COBOL.

Pe lângă traducerea între limbaje, domeniile de aplicare menționate pentru CodeNet includ crearea de sisteme inteligente de căutare a codului și automatizarea identificării clonelor, precum și dezvoltarea de optimizatoare și sisteme de corectare automată a codului. În special, exemplele prezentate în CodeNet sunt însoțite de metadate care descriu rezultatele testării performanței, dimensiunea programului rezultat, consumul de memorie și starea care permite diferențierea codului corect de cel cu erori (pentru a distinge codul corect de cel incorect, în colecție sunt incluse în mod special exemple cu erori, ponderea lor fiind de 29,5%). Sistemul de învățare automată poate ține cont de aceste metadate pentru a genera cel mai optim cod sau pentru a identifica regresiile în codul analizat (sistemul poate înțelege că algoritmul implementat în codul transmis nu este optim sau conține erori).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster