IBM åpner CodeNet for maskinlæringssystemer som oversetter og verifiserer kode

IBM har avduket sitt CodeNet-initiativ, som tar sikte på å gi forskere et datasett som lar dem eksperimentere med bruk av maskinlæringsteknikker for å lage programmeringsspråkoversettere, kodegeneratorer og analysatorer. CodeNet inkluderer en samling av 14 millioner kodeeksempler som løser 4053 vanlige programmeringsproblemer. Totalt inneholder samlingen rundt 500 millioner linjer med kode og dekker 55 programmeringsspråk, både moderne språk som C++, Java, Python og Go, og eldre språk som COBOL, Pascal og FORTRAN. Prosjektets utviklinger distribueres under Apache 2.0-lisensen, og datasettene planlegges distribuert i form av offentlig domene.

Eksemplene er kommentert og implementerer identiske algoritmer i forskjellige programmeringsspråk. Det forventes at det foreslåtte settet vil hjelpe til med å trene maskinlæringssystemer og utvikle innovasjoner innen oversettelse og maskinkodeparsing, på lik linje med hvordan ImageNet-annoterte bildedatabase bidro til utviklingen av mønstergjenkjenning og datasynssystemer. Ulike programmeringskonkurranser er sitert som en av hovedkildene til samlingsdannelse.

I motsetning til tradisjonelle oversettere, som er implementert basert på oversettelsesregler, kan maskinlæringssystemer fange opp og ta hensyn til konteksten for kodebruk. Når du konverterer fra ett programmeringsspråk til et annet, er kontekst like viktig som når du oversetter fra et menneskespråk til et annet. Denne mangelen på kontekstbetraktning er det som hindrer kode i å konverteres fra eldre språk som COBOL.

Å ha en stor database med algoritmeimplementeringer på forskjellige språk vil bidra til å skape universelle maskinlæringssystemer som, i stedet for direkte oversettelse mellom spesifikke språk, manipulerer en mer abstrakt representasjon av koden, uavhengig av spesifikke programmeringsspråk. Et slikt system kan brukes som en oversetter, og oversetter den overførte koden på hvilket som helst av de støttede språkene til sin interne abstrakte representasjon, hvorfra koden kan genereres på flere språk.

Systemet vil også kunne utføre toveis transformasjoner. For eksempel fortsetter banker og offentlige etater å bruke prosjekter på det utdaterte COBOL-språket. En maskinlæringsbasert oversetter vil kunne konvertere COBOL-kode til en Java-representasjon, og om nødvendig oversette Java-fragmentet tilbake til COBOL-kode.

I tillegg til oversettelse mellom språk, nevnes slike bruksområder for CodeNet som etablering av smarte kodesøkesystemer og automatisering av klonedeteksjon, samt utvikling av optimerere og automatiske kodekorrigeringssystemer. Spesielt er eksemplene presentert i CodeNet utstyrt med metadata som beskriver resultatene av ytelsestesting, den resulterende programstørrelsen, minneforbruket og tilstanden, som lar oss skille riktig kode fra kode med feil (for å skille riktig kode fra feil kode, samlingen inkluderer spesifikt eksempler med feil, hvorav andelen er 29.5 %). Et maskinlæringssystem kan ta hensyn til disse metadataene for å generere den mest optimale koden eller for å identifisere regresjoner i den analyserte koden (systemet kan forstå at algoritmen i den innsendte koden ikke er optimalt implementert eller inneholder feil).

Kilde: opennet.ru

Legg til en kommentar