TransCoder di Facebook utilizza l’intelligenza artificiale per convertire il codice da un linguaggio di programmazione a un altro

I ricercatori di Facebook hanno sviluppato un nuovo sistema di intelligenza artificiale (intelligenza artificiale) che converte il codice sorgente da un linguaggio di programmazione di alto livello a un altro.

Chiamato “TransCoder”, questo strumento di conversione del linguaggio basato su AI può tradurre tra linguaggi di alto livello come C ++, Java e Python in codice diverso con alta precisione.

Lo studio di ricerca è stato dettagliato nell’articolo intitolato “Traduzione senza supervisione di linguaggi di programmazione. “

Convertire il codice da un linguaggio di programmazione a un altro è un compito difficile anche per un programmatore esperto, poiché richiede la conoscenza sia della lingua di partenza che di quella di destinazione, rendendo costosi i progetti di traduzione del codice.

I transcompilatori eliminano la necessità di riscrivere il nuovo codice da zero. Tuttavia, è ancora un compito complicato per uno sviluppatore gestire linguaggi diversi che possono avere sintassi, modifiche alla libreria, tipi di variabili e adattamento AI diversi.

TransCoder “Neural Translator” di Facebook affronta tutti questi problemi con un approccio di apprendimento senza supervisione. Ciò significa che può funzionare senza supervisione con una quantità minima di supervisione o intervento umano per trovare modelli precedentemente non rilevati in set di dati non etichettati e superare le linee di base basate su regole commerciali di un margine “significativo”.

Nel documento, i ricercatori hanno proposto di applicare approcci recenti alla traduzione automatica senza supervisione, sfruttando una grande quantità di codice sorgente monolingue da GitHub per addestrare un modello, TransCoder, per tradurre tra tre linguaggi popolari: C ++, Java e Python.

Secondo il documento, il modello Transcoder funziona secondo tre principi fondamentali:

  • Il primo principio inizializza il modello con una pre-formazione del modello linguistico mascherato in più lingue. Di conseguenza, i frammenti di codice che esprimono le stesse istruzioni vengono mappati sulla stessa rappresentazione, indipendentemente dal linguaggio di programmazione.
  • Segue la codifica di riduzione del rumore automatica, in cui il decoder viene addestrato a generare sequenze valide anche se alimentato con dati rumorosi e aumenta la robustezza dell’encoder per il rumore di ingresso.
  • Infine, c’è un processo di “traduzione inversa” che viene utilizzato per riconvertire il codice nella prima lingua. Ciò consente a TransCoder di generare dati paralleli da confrontare con gli originali. La differenza riscontrata in questo processo viene utilizzata per rafforzare la formazione.
leggere  Pensaci due volte prima di installare l'aggiornamento di Windows 10 2004, avverte Microsoft

Lo strumento è stato addestrato con oltre 2,8 milioni di GitHub open source. Il team di Facebook Research ha anche testato 852 funzioni parallele in C ++, Java e Python da GeeksforGeeks, una piattaforma online che raccoglie problemi di codifica e presenta soluzioni in vari linguaggi di programmazione.

Utilizzando i due dati precedenti, hanno sviluppato una nuova metrica, la precisione computazionale, che controlla se le funzioni tradotte generano gli stessi output come riferimento con gli stessi input.

Ad esempio, durante la conversione da C ++ a Java, TransCoder ha raggiunto una precisione del 74,8% nei risultati attesi, mentre la conversione da Python a C ++ ha raggiunto una precisione del 57,8%, mentre Java in C ++, la precisione è del 91,6%.

“Sebbene non sia mai fornito di dati paralleli, il modello riesce a tradurre le funzioni con alta precisione e ad allineare correttamente le funzioni della libreria standard in tutte e tre le lingue, superando di un margine significativo le linee di base commerciali e basate su regole”, hanno scritto i coautori in l’articolo.

“Il nostro approccio è semplice, non richiede alcuna esperienza nei linguaggi di origine o di destinazione e può essere facilmente esteso alla maggior parte dei linguaggi di programmazione. Sebbene non sia perfetto, il modello potrebbe aiutare a ridurre la quantità di lavoro e di esperienza necessaria per tradurre con successo una base di codice “.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *