IBM maak CodeNet oop vir masjienleerstelsels wat kode vertaal en verifieer

IBM het sy CodeNet-inisiatief onthul, wat daarop gemik is om navorsers van 'n datastel te voorsien wat hulle in staat stel om te eksperimenteer met die gebruik van masjienleertegnieke om programmeertaalvertalers, kodegenerators en ontleders te skep. CodeNet sluit 'n versameling van 14 miljoen kodevoorbeelde in wat 4053 500 algemene programmeringsprobleme oplos. In totaal bevat die versameling ongeveer 55 miljoen reëls kode en dek 2.0 programmeertale, beide moderne tale soos C++, Java, Python en Go, en verouderde tale insluitend COBOL, Pascal en FORTRAN. Die projek se ontwikkelings word onder die Apache XNUMX-lisensie versprei, en die datastelle word beplan om in die vorm van publieke domein versprei te word.

Die voorbeelde is geannoteer en implementeer identiese algoritmes in verskillende programmeertale. Daar word verwag dat die voorgestelde stel sal help om masjienleerstelsels op te lei en innovasies te ontwikkel op die gebied van vertaling en masjienkode-ontleding, soortgelyk aan hoe die ImageNet geannoteerde beelddatabasis die ontwikkeling van patroonherkenning en rekenaarvisiestelsels gehelp het. Verskeie programmeringskompetisies word aangehaal as een van die hoofbronne van versamelingsvorming.

Anders as tradisionele vertalers, wat op grond van vertaalreëls geïmplementeer word, kan masjienleerstelsels die konteks van kodegebruik vaslê en in ag neem. Wanneer jy van een programmeertaal na 'n ander omskakel, is konteks net so belangrik as wanneer jy van een menslike taal na 'n ander vertaal. Hierdie gebrek aan konteksoorweging is wat verhoed dat kode van verouderde tale soos COBOL omgeskakel word.

Om 'n groot databasis van algoritme-implementerings in verskillende tale te hê, sal help om universele masjienleerstelsels te skep wat, in plaas van direkte vertaling tussen spesifieke tale, 'n meer abstrakte voorstelling van die kode manipuleer, onafhanklik van spesifieke programmeertale. So 'n stelsel kan as 'n vertaler gebruik word, wat die versende kode in enige van die ondersteunde tale vertaal in sy interne abstrakte voorstelling, waaruit kode dan in verskeie tale gegenereer kan word.

Die stelsel sal ook tweerigtingtransformasies kan uitvoer. Byvoorbeeld, banke en regeringsagentskappe gaan voort om projekte in die verouderde COBOL-taal te gebruik. 'n Masjienleer-gebaseerde vertaler sal COBOL-kode in 'n Java-voorstelling kan omskakel, en, indien nodig, die Java-fragment terugvertaal in COBOL-kode.

Benewens vertaling tussen tale, word sulke toepassingsgebiede van CodeNet soos die skepping van slimkodesoekstelsels en outomatisering van kloonopsporing, asook die ontwikkeling van optimeerders en outomatiese kodekorreksiestelsels genoem. Die voorbeelde wat in CodeNet aangebied word, is veral toegerus met metadata wat die resultate van prestasietoetsing, die gevolglike programgrootte, geheueverbruik en toestand beskryf, wat ons in staat stel om korrekte kode van kode met foute te onderskei (om korrekte kode van verkeerde kode te onderskei, die versameling sluit spesifiek voorbeelde met foute in, waarvan die aandeel 29.5% is. 'n Masjienleerstelsel kan hierdie metadata in ag neem om die mees optimale kode te genereer of om regressies in die geanaliseerde kode te identifiseer (die stelsel kan verstaan ​​dat die algoritme in die voorgelegde kode nie optimaal geïmplementeer is nie of foute bevat).

Bron: opennet.ru

Voeg 'n opmerking