IBM Malfermas CodeNet por Maŝinlernado-Sistemoj kiuj Tradukas kaj Konfirmas Kodon

IBM prezentis la iniciaton CodeNet, kiu celas provizi al esploristoj datumbazon por eksperimenti kun maŝinlernadaj metodoj por krei lingvotradukilojn, kodgeneratorojn kaj kodanalizilojn. CodeNet inkluzivas kolekton de 14 milionoj da kodekzemploj, kiuj solvas 4 053 oftajn programajn problemojn. Entute, la kolekto konsistas el proksimume 500 milionoj da linioj de kodo kaj kovras 55 programlingvojn, inkluzive de modernaj lingvoj kiel C++, Java, Python kaj Go, same kiel heredaĵajn lingvojn kiel COBOL, Pascal kaj FORTRAN. La laboro de la projekto estas licencita sub la licenco Apache 2.0, kaj la datumbazoj estas planitaj esti publike haveblaj.

La ekzemploj estas prinotitaj kaj efektivigas identajn algoritmojn en diversaj programlingvoj. Oni esperas, ke la proponita aro helpos trejni maŝinlernadajn sistemojn kaj evoluigi novigojn en la kampo de kodtradukado kaj maŝina sintakso, simile al kiel la prinotita bilddatumbazo ImageNet helpis la evoluon de bildrekono kaj komputilvidaj sistemoj. Diversaj programaj konkursoj estas cititaj kiel unu el la ĉefaj fontoj por la kolekto.

Male al tradiciaj tradukiloj bazitaj sur transformaj reguloj, maŝinlernadaj sistemoj povas kapti kaj konsideri la kuntekston de koduzado. Dum konvertado de unu programlingvo al alia, kunteksto estas ne malpli grava ol dum tradukado de unu homa lingvo al alia. Ĝuste ĉi tiu manko de kunteksto malhelpas la konverton de kodo el heredaj lingvoj kiel COBOL.

Havi grandan datumbazon de algoritmaj efektivigoj en diversaj lingvoj faciligos la kreadon de universalaj maŝinlernadaj sistemoj, kiuj, anstataŭ rekte tradukiĝi inter specifaj lingvoj, manipulas pli abstraktan reprezentaĵon de kodo sendepende de specifaj programlingvoj. Tia sistemo povas esti uzata kiel tradukilo, tradukante kodon alsenditan en iu ajn subtenata lingvo en sian propran internan abstraktan reprezentaĵon, el kiu kodo povas esti generita en pluraj lingvoj.

La sistemo ankaŭ povos plenumi dudirektajn transformojn. Ekzemple, bankoj kaj registaraj agentejoj ankoraŭ uzas projektojn skribitajn en la hereda COBOL-lingvo. Tradukilo bazita sur maŝinlernado povos konverti COBOL-kodon al ĝia Java-reprezento kaj, se necese, traduki Java-fragmenton reen al COBOL-kodo.

Aldone al tradukado inter lingvoj, la aplikaj kampoj de CodeNet inkluzivas la kreadon de inteligentaj kodserĉsistemoj kaj aŭtomatan klondetekton, same kiel la disvolvon de optimigiloj kaj aŭtomataj kodkorektosistemoj. Specife, la ekzemplojn prezentitajn en CodeNet akompanas metadatenoj priskribantaj rezultojn de rendimentaj testoj, la rezultan programgrandecon, memorkonsumon kaj staton, permesante distingi inter ĝusta kaj erar-entenanta kodo (por distingi ĝustan de malĝusta kodo, la kolekto specife inkluzivas ekzemplojn kun eraroj, kiuj konsistigas 29.5%). Maŝinlernada sistemo povas uzi ĉi tiujn metadatenojn por generi la plej optimuman kodon aŭ por identigi regresojn en la analizita kodo (la sistemo povas detekti ĉu la algoritmo en la alsendita kodo ne estas optimume efektivigita aŭ enhavas erarojn).

fonto: opennet.ru

Aĉetu fidindan gastigadon por retejoj kun DDoS-protekto, VPS-VDS-serviloj 🔥 Aĉetu fidindan retejan gastigadon kun DDoS-protekto, VPS VDS-servilojn | ProHoster