IBM har öppnat CodeNet för maskininlärningssystem som översätter och verifierar kod.

IBM har introducerat initiativet CodeNet, som syftar till att ge forskare en uppsättning data för att experimentera med användningen av maskininlärningsmetoder för att skapa översättare från ett programmeringsspråk till ett annat, samt generatorer och kodanalysatorer. CodeNet inkluderar en samling av 14 miljoner kodexempel som löser 4053 standardprogrammeringsproblem. Sammanlagt består samlingen av omkring 500 miljoner rader kod och täcker 55 programmeringsspråk, både moderna som C++, Java, Python och Go, och föråldrade språk som COBOL, Pascal och FORTRAN. Projektets resultat distribueras under Apache 2.0-licensen, och datasets planeras att distribueras i form av offentlig egendom.

Exemplen är försedda med annotationer och implementerar identiska algoritmer på olika programmeringsspråk. Det antas att den föreslagna uppsättningen kommer att hjälpa till med träningen av maskininlärningssystem och utvecklingen av innovationer inom översättning och maskinanalysering av kod, på liknande sätt som databasen med annoterade bilder ImageNet har hjälpt till med utvecklingen av system för mönsterigenkänning och maskinsyn. En av huvudkällorna till bildandet av samlingen anges vara olika programmeringstävlingar.

Till skillnad från traditionella översättare, som baseras på regler för omvandling, kan maskininlärningssystem fånga och beakta kontexten för användningen av koden. Vid omvandling från ett programmeringsspråk till ett annat är kontexten lika viktig som vid översättning från ett mänskligt språk till ett annat. Det är just bristen på hänsyn till kontexten som hindrar omvandlingen av kod från föråldrade språk som COBOL.

Närvaron av en stor databas av algoritmimplementeringar på olika språk kommer att hjälpa till att skapa universella maskininlärningssystem, som istället för direkt översättning mellan specifika språk manipulerar med en mer abstrakt representation av koden, oberoende av specifika programmeringsspråk. Ett sådant system kan användas som en översättare som omvandlar den mottagna koden på något av de stödda språken till sin interna abstrakta representation, från vilken kod sedan kan genereras på flera språk.

Systemet kommer att kunna utföra bidirektionella omvandlingar. Till exempel används projekt på det föråldrade språket COBOL fortfarande i banker och statliga institutioner. En översättare baserad på maskininlärning kan omvandla kod på COBOL till en representation på språket Java, och vid behov översätta en del av Java-koden tillbaka till COBOL.

Förutom översättning mellan språk nämns tillämpningsområden för CodeNet, såsom skapandet av intelligenta kodsökningssystem och automatisering av klonidentifiering, samt utveckling av optimerare och system för automatisk kodkorrektion. Speciellt är exemplen som presenteras i CodeNet försedda med metadata som beskriver testresultat, programstorlek, minnesförbrukning och tillstånd som möjliggör åtskiljande av korrekt kod från kod med fel (för att skilja på korrekt och inkorrekt kod har samlingen specifikt inkluderat exempel med fel, vars andel utgör 29,5 %). Maskininlärning-systemet kan använda dessa metadata för att generera den mest optimala koden eller identifiera regressioner i den analyserade koden (systemet kan förstå att algoritmen i den överlämnade koden inte är implementerad optimalt eller innehåller fel).

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster