IBM öppnar CodeNet för maskininlärningssystem som översätter och verifierar kod

IBM har avslöjat sitt CodeNet-initiativ, som syftar till att förse forskare med en datauppsättning som låter dem experimentera med användningen av maskininlärningstekniker för att skapa programmeringsspråksöversättare, kodgeneratorer och analysatorer. CodeNet innehåller en samling av 14 miljoner kodexempel som löser 4053 500 vanliga programmeringsproblem. Totalt innehåller samlingen cirka 55 miljoner rader kod och omfattar 2.0 programmeringsspråk, både moderna språk som C++, Java, Python och Go, och äldre språk som COBOL, Pascal och FORTRAN. Projektets utvecklingar distribueras under Apache XNUMX-licensen, och datamängderna planeras att distribueras i form av offentlig egendom.

Exemplen är kommenterade och implementerar identiska algoritmer i olika programmeringsspråk. Det förväntas att den föreslagna uppsättningen kommer att hjälpa till att träna maskininlärningssystem och utveckla innovationer inom området för översättning och maskinkodsanalys, liknande hur ImageNet-kommenterade bilddatabas hjälpte utvecklingen av system för mönsterigenkänning och datorseende. Olika programmeringstävlingar nämns som en av de viktigaste källorna till samlingsbildning.

Till skillnad från traditionella översättare, som implementeras baserat på transformationsregler, kan maskininlärningssystem fånga och ta hänsyn till sammanhanget för kodanvändning. När man konverterar från ett programmeringsspråk till ett annat är sammanhanget lika viktigt som när man översätter från ett mänskligt språk till ett annat. Denna brist på kontexthänsyn är det som hindrar kod från att konverteras från äldre språk som COBOL.

Att ha en stor databas med algoritmimplementationer på olika språk kommer att bidra till att skapa universella maskininlärningssystem som, istället för direkt översättning mellan specifika språk, manipulerar en mer abstrakt representation av koden, oberoende av specifika programmeringsspråk. Ett sådant system kan användas som en översättare, som översätter den överförda koden på något av de språk som stöds till dess interna abstrakta representation, från vilken kod sedan kan genereras på flera språk.

Systemet kommer också att kunna utföra dubbelriktade transformationer. Till exempel fortsätter banker och statliga myndigheter att använda projekt på det föråldrade COBOL-språket. En maskininlärningsbaserad översättare kommer att kunna konvertera COBOL-kod till en Java-representation och, om nödvändigt, översätta Java-fragmentet tillbaka till COBOL-kod.

Förutom översättning mellan språk nämns tillämpningsområden för CodeNet som skapandet av smarta kodsökningssystem och automatisering av klondetektering, samt utvecklingen av optimerare och automatiska kodkorrigeringssystem. I synnerhet är exemplen som presenteras i CodeNet utrustade med metadata som beskriver resultaten av prestandatestning, den resulterande programstorleken, minnesförbrukning och tillstånd, vilket gör att vi kan skilja korrekt kod från kod med fel (för att skilja korrekt kod från felaktig kod, insamlingen innehåller specifikt exempel med fel, vars andel är 29.5 %). Ett maskininlärningssystem kan ta hänsyn till denna metadata för att generera den mest optimala koden eller för att identifiera regressioner i den analyserade koden (systemet kan förstå att algoritmen i den inlämnade koden inte är optimalt implementerad eller innehåller fel).

Källa: opennet.ru

Lägg en kommentar