IBM har åbnet CodeNet for maskinlæringssystemer, der oversætter og validerer kode.

IBM har præsenteret initiativet CodeNet, som sigter mod at give forskere et datasæt, der muliggør eksperimentering med anvendelse af maskinlæringmetoder til at skabe oversættere fra et programmeringssprog til et andet samt generatorer og analysatorer af kode. CodeNet omfatter en samling af 14 millioner kodeeksempler, der løser 4053 typiske programmeringsproblemer. Samlet set rummer samlingen omkring 500 millioner linjer kode og dækker 55 programmeringssprog, både moderne sprog som C++, Java, Python og Go, samt forældede sprog, herunder COBOL, Pascal og FORTRAN. Projektets resultater distribueres under Apache 2.0-licensen, og datasæt forventes at blive distribueret som offentligt domæne.

Eksemplerne er forsynet med annotationer og implementerer identiske algoritmer på forskellige programmeringssprog. Det forventes, at det foreslåede datasæt vil hjælpe med træning af maskinlæringssystemer og udvikling af innovation inden for oversættelse og maskinel analyse af kode, på samme måde som databasen med annoterede billeder ImageNet har hjulpet med udviklingen af systems til mønstergenkendelse og maskinsyn. En af de primære kilder til dannelse af samlingen nævnes som forskellige programmeringskonkurrencer.

I modsætning til traditionelle oversættere, der er implementeret på grundlag af transformationsregler, kan maskinlæringssystemer fange og tage højde for konteksten af kodebrugen. Ved omdannelse fra ét programmeringssprog til et andet er konteksten lige så vigtig som ved oversættelse fra ét menneskesprog til et andet. Det er netop manglende hensyntagen til konteksten, der hindrer omdannelsen af kode fra forældede sprog som COBOL.

Eksistensen af en stor database af implementeringer af algoritmer på forskellige sprog vil hjælpe med at skabe universelle maskinlæringssystemer, der i stedet for direkte oversættelse mellem specifikke sprog manipulerer med en mere abstrakt repræsentation af koden, uafhængig af specifikke programmeringssprog. Et sådant system kan anvendes som en oversætter, der konverterer den modtagne kode på et hvilket som helst af de understøttede sprog til sin interne abstrakte repræsentation, hvorfra der derefter kan genereres kode på mange sprog.

Systemet vil blandt andet kunne udføre tovejs konverteringer. For eksempel bruges der stadig projekter baseret på det forældede programmeringssprog COBOL i banker og offentlige institutioner. Oversætteren baseret på maskinlæring vil kunne konvertere COBOL-kode til Java-repræsentation, og om nødvendigt oversætte et segment af Java tilbage til COBOL-kode.

Udover konvertering mellem sprog nævnes anvendelsesområderne for CodeNet som oprettelse af intelligente kodsøgesystemer og automatisering af opdagelse af kloner, samt udvikling af optimeringsværktøjer og systemer til automatisk kodekorrektion. De eksempler, der præsenteres i CodeNet, er udstyret med metadata, der beskriver testresultater for ydeevne, den resulterende programstørrelse, hukommelsesforbrug og tilstande, der gør det muligt at skelne korrekt kode fra kode med fejl (for at skelne korrekt kode fra inkorrekt er der forsætligt inkluderet eksempler med fejl, som udgør 29,5%). Maskinlæringssystemet kan tage højde for disse metadata for at generere den mest optimale kode eller identificere regressionsproblemer i den analyserede kode (systemet kan forstå, hvis algoritmen i den overførte kode er implementeret suboptimalt eller indeholder fejl).

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster