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

Gli ingegneri di Facebook hanno pubblicato un transcompilatore Transcodificatore, che utilizza tecniche di apprendimento automatico per trasformare il codice sorgente da un linguaggio di programmazione di alto livello a un altro. Attualmente viene fornito il supporto per la traduzione del codice tra Java, C++ e Python. Ad esempio, TransCoder ti consente di convertire il codice sorgente Java in codice Python e il codice Python in codice sorgente Java. Gli sviluppi del progetto vengono messi in pratica ricerca teorica sulla creazione di una rete neurale per un'efficiente transcompilazione automatica del codice e diffusione concesso in licenza con licenza Creative Commons Attribution-NonCommercial 4.0 solo per uso non commerciale.

L'implementazione del sistema di machine learning è basata su Pytorch. Sono disponibili per il download due modelli già pronti: 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, abbiamo utilizzato i codici sorgente dei progetti pubblicati su GitHub. Se lo si desidera, è possibile creare modelli di traduzione per altri linguaggi di programmazione. Per verificare la qualità della trasmissione è stata preparata una raccolta di unit test, nonché una suite di test che comprende 852 funzioni parallele.

Si sostiene che in termini di precisione di conversione, TransCoder è significativamente superiore ai traduttori commerciali che utilizzano metodi basati su regole di conversione e nel processo di lavoro consente di fare a meno della valutazione di esperti nella lingua di partenza e di destinazione. La maggior parte degli errori che si verificano durante il funzionamento del modello possono essere eliminati aggiungendo semplici restrizioni al decodificatore 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 “Transformer” per la modellazione di sequenze, in cui la ricorrenza è sostituita da “attenzione"(modello seq2seq con attenzione), che consente di eliminare alcune dipendenze nel grafico computazionale e parallelizzare ciò che prima non era suscettibile di parallelizzazione. Tutte le lingue supportate utilizzano un unico modello comune, addestrato utilizzando 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