CodeNet, et IBM-prosjekt for maskinlæringssystemer 

IBM-logo

IBM avduket nylig hans nye prosjekt kalt "CodeNet" hvilken har som mål å gi forskere et datasett for å eksperimentere med bruk av maskinlæringsteknikker å lage oversettere fra ett programmeringsspråk til et annet, samt generatorer og kodeanalysatorer.

CodeNet inkluderer en samling på 14 millioner kodeeksempler som løser 4053 vanlige programmeringsproblemer. Totalt inneholder samlingen rundt 500 millioner kodelinjer og dekker 55 programmeringsspråk, både moderne språk som C ++, Java, Python og Go, samt eldre språk, inkludert COBOL, Pascal og FORTRAN.

"Programvare spiser verden," skrev den berømte amerikanske forretningsmannen Marc Andreessen i 2011. Raskt frem til i dag: programvare finnes i finansielle tjenester og helsetjenester, smarttelefoner og smarte hjem. Selv biler har nå mer enn 100 millioner linjer med kode.

Prosjektutviklingen er utgitt under Apache 2.0-lisensen, og datasettene forventes å bli utgitt i det offentlige området.

Eksemplene er kommentert og implementerer identiske algoritmer på forskjellige programmeringsspråk. Det foreslåtte settet skal hjelpe til med å trene maskinlæringssystemer og utvikle innovasjoner innen automatisk kodeoversettelse og analyse, analogt med måten ImageNet-databasen med merkede bilder hjalp til med å utvikle systemer for bildegjenkjenning og kunstig syn. Ulike programmeringskonkurranser er nevnt som en av hovedkildene til samlingsbygging.

Project CodeNet kan spesifikt drive algoritmisk innovasjon for å trekke ut denne konteksten med sekvens-for-sekvens-modeller, akkurat som det vi har brukt på menneskelige språk, for å gjøre en mer betydelig buk i maskinens forståelse av koden i stedet for å behandle koden. .

I motsetning til tradisjonelle oversettere basert på oversettelsesregler, maskinlæringssystemer kan fange opp og ta hensyn til konteksten til kodebruk. Når du konverterer fra ett programmeringsspråk til et annet, er kontekst like viktig som når du oversetter fra ett menneskelig språk til et annet. Det er mangelen på kontekstuell bevissthet som forhindrer koden i å konvertere fra eldre språk som COBOL.

Tilstedeværelsen av en stor base av algoritmeimplementeringer på forskjellige språk vil bidra til å skape universelle maskinlæringssystemer som, i stedet for direkte oversettelse mellom bestemte språk, manipulerer en mer abstrakt representasjon av koden, uavhengig av spesifikke programmeringsspråk.

Et slikt system kan brukes som en oversetter som oversetter den overførte koden på et hvilket som helst av de støttede språkene til den interne abstrakte representasjonen, hvorfra kode på mange språk kan genereres.

Inkludert systemet kan du utføre toveis transformasjoner. For eksempel fortsetter banker og offentlige etater å bruke eldre COBOL-prosjekter. En maskinlæringsoversetter kan konvertere COBOL-kode til Java-representasjon og eventuelt oversette en Java-kodebit tilbake til COBOL-kode.

I tillegg til oversettelse mellom språk nevnes CodeNet applikasjonsområder som opprettelse av intelligente kodesøkesystemer og automatisering av klonoppdagelse, samt utvikling av optimaliserere og systemer for automatisk kodekorreksjon.

Spesielt Eksemplene som presenteres i CodeNet er forsynt med metadata som beskriver resultatene av ytelsestestene, størrelsen på det resulterende programmet, minneforbruket og tilstanden som gjør det mulig å skille riktig kode fra koden med feil (for å skille riktig kode fra feil kode, eksempler med feil er spesielt inkludert i samlingen, hvis andel er 29,5, XNUMX%).

Et maskinlæringssystem kan ta disse metadataene i betraktning for å generere den mest optimale koden eller for å oppdage regresjoner i den analyserte koden (systemet kan forstå at algoritmen ikke er optimalt implementert i den overførte koden eller inneholder feil).

Endelig Hvis du er interessert i å lære mer om CodeNet, kan du sjekke detaljene I den følgende lenken.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: AB Internet Networks 2008 SL
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.