Facebook sta sviluppando TransCoder per tradurre il codice da un linguaggio di programmazione a un altro

Gli ingegneri di Facebook pubblicano il transcompilatore TransCoder, che utilizza metodi di apprendimento automatico per trasformare i testi sorgente da un linguaggio di programmazione di alto livello a un altro. Attualmente, è disponibile il supporto per la traduzione del codice tra i linguaggi Java, C++ e Python. Ad esempio, TransCoder consente di trasformare i testi sorgente Java in codice Python e viceversa. Gli sviluppi del progetto sono in fase di implementazione pratica. ricerca teorica sulla creazione di una rete neurale per la transcompilazione automatica efficiente del codice e diffusione con licenza Creative Commons Attribuzione-Non commerciale 4.0, che consente solo l'uso non commerciale.

L'implementazione del sistema di apprendimento automatico si basa su Pytorch. Sono disponibili due modelli già pronti per il download: prima per tradurre C++ in Java, Java in C++ e Java in Python, e secondo per la trasmissione
Da C++ a Python, da Python a C++ e da Python a Java. Per addestrare i modelli è stato utilizzato il codice sorgente dei progetti ospitati su GitHub. Se lo si desidera, è possibile creare modelli di traduzione per altri linguaggi di programmazione. Per verificare la qualità della traduzione, sono stati preparati una serie di test unitari e un set di test che include 852 funzioni parallele.

Si afferma che TransCoder sia significativamente più accurato dei traduttori commerciali che utilizzano metodi basati su regole e che sia in grado di lavorare senza la valutazione di esperti nelle lingue di partenza e di arrivo. La maggior parte degli errori che si verificano durante il funzionamento del modello può essere eliminata aggiungendo semplici vincoli al decoder per garantire che le funzioni generate siano sintatticamente corrette.

 Facebook sta sviluppando TransCoder per tradurre il codice da un linguaggio di programmazione a un altro

I ricercatori hanno proposto una nuova architettura di rete neurale chiamata "Transformer" per la modellazione delle sequenze, in cui la ricorrenza è sostituita da "attenzione» (modello seq2seq con attenzione), che consente di eliminare alcune dipendenze nel grafo computazionale e parallelizzare ciò che prima non era parallelizzabile. Viene utilizzato un unico modello generale per tutti i linguaggi supportati e per l'addestramento vengono utilizzati tre principi: inizializzazione, modellazione del linguaggio e traduzione inversa.

 Facebook sta sviluppando TransCoder per tradurre il codice da un linguaggio di programmazione a un altro

Fonte: opennet.ru

Aggiungi un commento