IBM avab CodeNeti masinõppesüsteemide jaoks, mis tõlgivad ja kontrollivad koodi

IBM avalikustas oma CodeNeti algatuse, mille eesmärk on pakkuda teadlastele andmestikku, mis võimaldab neil katsetada masinõppetehnikate kasutamist programmeerimiskeele tõlkijate, koodigeneraatorite ja analüsaatorite loomiseks. CodeNet sisaldab 14 miljonist koodinäidisest koosnevat kogumit, mis lahendavad 4053 levinumat programmeerimisprobleemi. Kokku sisaldab kollektsioon umbes 500 miljonit koodirida ja hõlmab 55 programmeerimiskeelt, nii kaasaegseid keeli nagu C++, Java, Python ja Go, kui ka pärandkeeli, sealhulgas COBOL, Pascal ja FORTRAN. Projekti arendusi levitatakse Apache 2.0 litsentsi all ning andmekogusid on plaanis levitada avaliku domeenina.

Näited on annoteeritud ja rakendavad identseid algoritme erinevates programmeerimiskeeltes. Eeldatakse, et pakutav komplekt aitab koolitada masinõppesüsteeme ja arendada uuendusi tõlkimise ja masinkoodi sõelumise valdkonnas, sarnaselt sellele, kuidas ImageNeti annoteeritud kujutiste andmebaas aitas välja töötada mustrituvastuse ja arvutinägemise süsteeme. Üheks peamiseks kollektsiooni moodustamise allikaks on välja toodud erinevad programmeerimisvõistlused.

Erinevalt traditsioonilistest tõlkijatest, mida rakendatakse teisendusreeglite alusel, suudavad masinõppesüsteemid koodikasutuse konteksti tabada ja sellega arvestada. Ühest programmeerimiskeelest teise teisendamisel on kontekst sama oluline kui ühest inimkeelest teise tõlkimisel. See konteksti arvestamise puudumine takistab koodi teisendamist pärandkeeltest, nagu COBOL.

Suure andmebaasi olemasolu erinevates keeltes algoritmide juurutuste kohta aitab luua universaalseid masinõppesüsteeme, mis konkreetsete keeltevahelise otsese tõlkimise asemel manipuleerivad koodi abstraktsema esitusega, sõltumata konkreetsetest programmeerimiskeeltest. Sellist süsteemi saab kasutada tõlkijana, tõlkides edastatud koodi mis tahes toetatud keeles selle sisemiseks abstraktseks esituseks, millest saab seejärel koodi genereerida mitmes keeles.

Süsteem on võimeline teostama ka kahesuunalisi teisendusi. Näiteks pangad ja riigiasutused kasutavad jätkuvalt projekte aegunud COBOL-keeles. Masinõppel põhinev tõlkija suudab teisendada COBOL-i koodi Java esituseks ja vajadusel tõlkida Java fragmendi tagasi COBOL-koodiks.

Lisaks keeltevahelisele tõlkimisele mainitakse selliseid CodeNeti rakendusvaldkondi nagu nutikate koodiotsingusüsteemide loomine ja kloonide tuvastamise automatiseerimine, aga ka optimeerijate ja automaatsete koodiparandussüsteemide väljatöötamine. Eelkõige on CodeNetis toodud näited varustatud metaandmetega, mis kirjeldavad jõudlustestimise tulemusi, sellest tulenevat programmi suurust, mälukulu ja olekut, mis võimaldab eristada õiget koodi vigadega koodist (õige koodi eristamiseks valest koodist, kogumik sisaldab konkreetselt näiteid vigadega, mille osakaal on 29.5%). Masinõppesüsteem saab neid metaandmeid arvesse võtta, et genereerida optimaalne kood või tuvastada analüüsitud koodis regressioone (süsteem saab aru, et esitatud koodi algoritm pole optimaalselt rakendatud või sisaldab vigu).

Allikas: opennet.ru

Lisa kommentaar