CodeNet, ett IBM-projekt för maskininlärningssystem 

IBM-logotyp

IBM presenterade nyligen kallade hans nya projekt "CodeNet" vilken syftar till att ge forskare en datamängd för att experimentera med maskininlärningstekniker att skapa översättare från ett programmeringsspråk till ett annat, samt generatorer och kodanalysatorer.

CodeNet innehåller en samling på 14 miljoner kodprover som löser 4053 vanliga programmeringsproblem. Totalt innehåller samlingen cirka 500 miljoner rader kod och täcker 55 programmeringsspråk, både moderna språk som C ++, Java, Python och Go, samt arv, inklusive COBOL, Pascal och FORTRAN.

"Programvara äter världen", skrev den berömda amerikanska affärsmannen Marc Andreessen 2011. Snabbt fram till idag: programvara finns i finansiella tjänster och sjukvård, smartphones och smarta hem. Även bilar har nu mer än 100 miljoner rader kod.

Projektutvecklingen släpps under Apache 2.0-licensen och datamängderna förväntas släppas offentligt.

Exemplen är antecknade och implementerar identiska algoritmer på olika programmeringsspråk. Den föreslagna uppsättningen är tänkt att hjälpa till att träna maskininlärningssystem och utveckla innovationer inom automatisk kodöversättning och -analys, i analogi med hur ImageNet-databasen med antecknade bilder hjälpte till utvecklingen av system för bildigenkänning och konstgjord syn. Olika programmeringstävlingar nämns som en av de viktigaste källorna till samlingsbyggnad.

Project CodeNet kan specifikt driva algoritmisk innovation för att extrahera detta sammanhang med sekvens-för-sekvensmodeller, ungefär som vad vi har tillämpat på mänskliga språk, för att göra en mer betydande del i maskinförståelse av kod snarare än bearbetning av kod. .

Till skillnad från traditionella översättare baserat på översättningsregler, maskininlärningssystem kan fånga och ta hänsyn till sammanhanget med kodanvändning. När man konverterar från ett programmeringsspråk till ett annat är sammanhang lika viktigt som när man översätter från ett mänskligt språk till ett annat. Det är bristen på kontextuell medvetenhet som förhindrar att koden konverteras från äldre språk som COBOL.

Närvaron av en stor bas av algoritmimplementeringar på olika språk hjälper till att skapa universella maskininlärningssystem som istället för liveö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 överförd kod på vilket som helst av de språk som stöds till dess interna abstrakta representation, från vilken kod på många språk kan genereras.

Inklusive systemet kan du utföra dubbelriktade omvandlingar. Till exempel fortsätter banker och myndigheter att använda äldre COBOL-projekt. En maskininlärningsöversättare kan konvertera COBOL-kod till Java-representation och eventuellt översätta ett Java-utdrag tillbaka till COBOL-kod.

Förutom översättning mellan språk nämns CodeNet applikationsområden såsom skapande av intelligenta kodsökningssystem och automatisering av klonavkänning, liksom utveckling av optimerare och system för automatisk kodkorrigering.

I synnerhet Exemplen som presenteras i CodeNet är försedda med metadata som beskriver resultaten av prestandatesterna, storleken på det resulterande programmet, minnesförbrukningen och tillståndet som gör det möjligt att skilja rätt kod från koden med fel (för att skilja rätt kod från fel kod, exempel med fel ingår speciellt i samlingen, vars andel är 29,5, XNUMX%).

Ett maskininlärningssystem kan ta hänsyn till denna metadata för att generera den mest optimala koden eller för att upptäcka regressioner i den analyserade koden (systemet kan förstå att algoritmen inte är optimalt implementerad i den överförda koden eller innehåller fel).

Slutligen Om du är intresserad av att lära dig mer om CodeNet, du kan kontrollera detaljerna I följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.