CodeNet, un projecte d'IBM per a sistemes d'aprenentatge automàtic 

Logotip d’IBM

IBM va donar a conèixer recentment el seu nou projecte anomenat CodeNet el qual té com a objectiu proporcionar als investigadors un conjunt de dades per experimentar amb l'ús de tècniques d'aprenentatge automàtic per crear traductors d'un llenguatge de programació a un altre, així com a generadors i analitzadors de codi.

CodeNet inclou una col·lecció de 14 milions d'exemples de codi que resolen 4053 problemes de programació comuns. En total, la col·lecció conté al voltant de 500 milions de línies de codi i cobreix 55 llenguatges de programació, tant llenguatges moderns com C ++, Java, Python i Go, com heretats, inclosos COBOL, Pascal i FORTRAN.

«El programari s'està menjant el món», va escriure el famós empresari nord-americà Marc Andreessen el 2011. Un avanç ràpid fins al dia d'avui: el programari es troba en serveis financers i atenció mèdica, telèfons intel·ligents i llars intel·ligents. Fins i tot els automòbils ara tenen més de 100 milions de línies de codi.

Els desenvolupaments de el projecte es distribueixen sota la llicència Apache 2.0 i es preveu que els conjunts de dades es distribueixin en forma de domini públic.

Els exemples estan anotats i implementen algoritmes idèntics en diferents llenguatges de programació. Se suposa que el conjunt proposat ajudarà a entrenar sistemes d'aprenentatge automàtic i desenvolupar innovacions en el camp de la traducció i l'anàlisi automàtic de codi, per analogia amb la forma en què la base de dades ImageNet d'imatges anotades va ajudar a el desenvolupament de sistemes de reconeixement d'imatges i visió artificial. Diversos concursos de programació s'esmenten com una de les principals fonts de formació de col·leccions.

Project CodeNet específicament pot impulsar la innovació algorísmica per extreure aquest context amb models seqüència a seqüència, a l'igual que el que hem aplicat en els llenguatges humans, per fer una mossa més significativa en la comprensió de la màquina de el codi en lloc de el processament de la màquina de el codi.

A diferència dels traductors tradicionals basats en regles de traducció, els sistemes d'aprenentatge automàtic poden capturar i tenir en compte el context de l'ús de el codi. A l'convertir d'un llenguatge de programació a un altre, el context és tan important com a l'traduir d'un llenguatge humà a un altre. És la manca de consciència de context el que evita que el codi es converteixi de llenguatges heretats com COBOL.

La presència d'una gran base de implementacions d'algoritmes en diversos llenguatges ajudarà a crear sistemes universals d'aprenentatge automàtic que, en lloc de traducció en directe entre llenguatges específics, manipulin una representació més abstracta de el codi, independent de llenguatges de programació específics.

Aquest sistema es pot utilitzar com un traductor que tradueix el codi transmès en qualsevol dels idiomes admesos a la seva representació abstracta interna, a partir de la qual es pot generar codi en molts idiomes.

Incloent el sistema podrà realitzar transformacions bidireccionals. Per exemple, els bancs i les agències governamentals continuen utilitzant projectes COBOL heretats. Un traductor d'aprenentatge automàtic pot convertir el codi COBOL a la representació de Java i, opcionalment, traduir un fragment de Java de nou a el codi COBOL.

A més de la traducció entre idiomes, s'esmenten àrees d'aplicació de CodeNet com la creació de sistemes de recerca de codis intel·ligents i l'automatització de la detecció de clons, així com el desenvolupament de optimitzadors i sistemes per a la correcció automàtica de codis.

En particular, els exemples presentats en CodeNet s'inclouen amb metadades que descriuen els resultats de les proves de rendiment, La mida de el programa resultant, el consum de memòria i l'estat que permet distingir el codi correcte de el codi amb errors (per distingir el codi correcte de el codi incorrecte, exemples amb errors s'inclouen especialment en la col·lecció, la participació és de l'29,5, XNUMX%).

Un sistema d'aprenentatge automàtic pot tenir en compte aquestes metadades per generar el codi més òptim o per detectar regressions en el codi analitzat (el sistema pot entendre que l'algoritme no està implementat de manera òptima en el codi transmès o conté errors).

Finalment si estàs interessat en conèixer més a l'respecte sobre CodeNet, pots consultar els detalls en el següent enllaç.


Sigues el primer a comentar

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.