CodeNet, un progetto IBM per sistemi di machine learning 

Logo IBM

IBM ha svelato recentemente il suo nuovo progetto chiamato "CodeNet" che mira a fornire ai ricercatori un set di dati con cui sperimentare l'utilizzo di tecniche di apprendimento automatico creare traduttori da un linguaggio di programmazione a un altro, nonché generatori e analizzatori di codice.

CodeNet include una raccolta di 14 milioni di esempi di codice che risolvono 4053 problemi di programmazione comuni. In totale, la raccolta contiene circa 500 milioni di righe di codice e copre 55 linguaggi di programmazione, sia linguaggi moderni come C ++, Java, Python e Go, sia legacy, tra cui COBOL, Pascal e FORTRAN.

"Il software sta divorando il mondo", ha scritto il famoso uomo d'affari americano Marc Andreessen nel 2011. Avanti veloce fino ad oggi: il software si trova nei servizi finanziari e nella sanità, negli smartphone e nelle case intelligenti. Anche le auto ora hanno più di 100 milioni di righe di codice.

Gli sviluppi del progetto vengono rilasciati con la licenza Apache 2.0 e si prevede che i set di dati saranno rilasciati nel pubblico dominio.

Gli esempi sono annotati e implementano algoritmi identici in diversi linguaggi di programmazione. Il set proposto dovrebbe aiutare a formare sistemi di apprendimento automatico e sviluppare innovazioni nel campo della traduzione e analisi automatica del codice, analogamente al modo in cui il database ImageNet di immagini annotate ha aiutato lo sviluppo di sistemi di riconoscimento delle immagini e visione artificiale. Vari concorsi di programmazione sono citati come una delle principali fonti di raccolta.

Project CodeNet può guidare specificamente l'innovazione algoritmica per estrarre questo contesto con modelli sequenza per sequenza, proprio come quello che abbiamo applicato nei linguaggi umani, per intaccare in modo più significativo la comprensione del codice da parte della macchina piuttosto che l'elaborazione del codice.

A differenza dei traduttori tradizionali basati su regole di traduzione, i sistemi di machine learning possono acquisire e prendere in considerazione il contesto di utilizzo del codice. Quando si converte da un linguaggio di programmazione a un altro, il contesto è importante tanto quanto quando si traduce da un linguaggio umano a un altro. È la mancanza di consapevolezza contestuale che impedisce la conversione del codice da linguaggi legacy come COBOL.

La presenza di un'ampia base di implementazioni di algoritmi in vari linguaggi aiuterà a creare sistemi universali di machine learning che, invece della traduzione dal vivo tra linguaggi specifici, manipolano una rappresentazione più astratta del codice, indipendentemente da specifici linguaggi di programmazione.

Un tale sistema può essere utilizzato come traduttore che traduce il codice trasmesso in una qualsiasi delle lingue supportate nella sua rappresentazione astratta interna, dalla quale è possibile generare codice in molte lingue.

Compreso il sistema è possibile eseguire trasformazioni bidirezionali. Ad esempio, le banche e le agenzie governative continuano a utilizzare i progetti COBOL legacy. Un traduttore di machine learning può convertire il codice COBOL in rappresentazione Java e, facoltativamente, tradurre uno snippet Java in codice COBOL.

Oltre alla traduzione tra le lingue, vengono menzionate le aree di applicazione di CodeNet come la creazione di sistemi intelligenti di ricerca del codice e l'automazione del rilevamento dei cloni, nonché lo sviluppo di ottimizzatori e sistemi per la correzione automatica del codice.

In particolare, Gli esempi presentati in CodeNet vengono forniti con metadati che descrivono i risultati dei test delle prestazioni, la dimensione del programma risultante, il consumo di memoria e lo stato che consente di distinguere il codice corretto da quello errato (per distinguere il codice corretto da quello errato, gli esempi con errori sono appositamente inclusi nella raccolta, la cui quota è 29,5 , XNUMX%).

Un sistema di machine learning può prendere in considerazione questi metadati per generare il codice più ottimale o per rilevare regressioni nel codice analizzato (il sistema può capire che l'algoritmo non è implementato in modo ottimale nel codice trasmesso o contiene errori).

Infine Se sei interessato a saperne di più su CodeNet, puoi controllare i dettagli Nel seguente collegamento.


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.