IBM apre CodeNet per i sistemi di machine learning chì traducenu è verificanu u codice

IBM hà svelatu a so iniziativa CodeNet, chì hà u scopu di furnisce i circadori cù un inseme di dati chì li permette di sperimentà l'usu di tecniche d'apprendimentu machine per creà traduttori di lingua di prugrammazione, generatori di codice è analizzatori. CodeNet include una cullizzioni di 14 milioni di esempi di codice chì risolve 4053 500 prublemi cumuni di prugrammazione. In totale, a cullizzioni cuntene circa 55 milioni di linee di codice è copre 2.0 lingue di prugrammazione, tramindui lingue muderne cum'è C++, Java, Python è Go, è lingue eredità cumpresi COBOL, Pascal è FORTRAN. I sviluppi di u prugettu sò distribuiti sottu a licenza Apache XNUMX, è i setti di dati sò previsti per esse distribuiti in forma di duminiu publicu.

L'esempii sò annotati è implementanu algoritmi identici in diverse lingue di prugrammazione. Hè previstu chì l'inseme pruposta aiutarà à furmà i sistemi di apprendimentu di macchina è à sviluppà innovazioni in u campu di a traduzzione è l'analisi di u codice di a macchina, simili à cumu a basa di dati di l'imaghjini di ImageNet hà aiutatu à u sviluppu di i sistemi di ricunniscenza di mudelli è di visione per computer. Diversi cuncorsi di prugrammazione sò citati cum'è una di e fonti principali di furmazione di cullezzione.

A cuntrariu di i traduttori tradiziunali, chì sò implementati basati nantu à e regule di trasfurmazioni, i sistemi di apprendimentu automaticu ponu catturà è piglià in contu u cuntestu di l'usu di u codice. Quandu si cunvertisce da una lingua di prugrammazione à l'altru, u cuntestu hè cusì impurtante cum'è quandu si traduce da una lingua umana à l'altru. Questa mancanza di cunsiderazione di u cuntestu hè ciò chì impedisce u codice da esse cunvertitu da lingue legacy cum'è COBOL.

Avè una grande basa di dati di implementazioni di algoritmi in diverse lingue aiuterà à creà sistemi universali di apprendimentu automaticu chì, invece di traduzzione diretta trà lingue specifiche, manipulanu una rapprisintazioni più astratta di u codice, indipendentemente da lingue di prugrammazione specifiche. Un tali sistema pò esse usatu cum'è traduttore, traducendu u codice trasmessu in qualsiasi di e lingue supportate in a so rappresentazione astratta interna, da quale u codice pò esse generatu in parechje lingue.

U sistema serà ancu capaci di fà trasfurmazioni bidirezzione. Per esempiu, i banche è l'agenzii di u guvernu cuntinueghjanu à aduprà prughjetti in a lingua COBOL antica. Un traduttore basatu in l'apprendimentu automaticu serà capaci di cunvertisce u codice COBOL in una rapprisintazioni Java, è, se ne necessariu, traduce u frammentu Java in codice COBOL.

In più di a traduzzione trà e lingue, tali spazii di applicazione di CodeNet cum'è a creazione di sistemi di ricerca di codice intelligente è l'automatizazione di a deteczione di clone, è ancu u sviluppu di ottimisatori è sistemi di correzione automatica di codice sò citati. In particulare, l'esempii presentati in CodeNet sò dotati di metadati chì descrizanu i risultati di a prova di rendiment, a dimensione di u prugramma resultanti, u cunsumu di memoria è u statu, chì ci permette di distingue u codice currettu da u codice cù errori (per distingue u codice currettu da u codice incorrectu, cullezzione specificamente include esempii cù errori, a parte di quale hè 29.5%). Un sistema di machine learning pò piglià in contu queste metadata per generà u codice più ottimali o per identificà regressioni in u codice analizatu (u sistema pò capisce chì l'algoritmu in u codice sottumessu ùn hè micca implementatu in modu ottimale o cuntene errori).

Source: opennet.ru

Add a comment