Facebook está desarrollando TransCoder para traducir código de un lenguaje de programación a otro

Los ingenieros de Facebook han publicado un transcompilador transcodificador, que utiliza técnicas de aprendizaje automático para transformar el código fuente de un lenguaje de programación de alto nivel a otro. Actualmente, se proporciona soporte para traducir código entre Java, C++ y Python. Por ejemplo, TransCoder le permite convertir código fuente Java en código Python y código Python en código fuente Java. Los avances del proyecto se están poniendo en práctica. investigación teórica sobre la creación de una red neuronal para la transcompilación automática eficiente de código y propagar bajo una licencia Creative Commons Attribution-NonCommercial 4.0 para uso no comercial únicamente.

La implementación del sistema de aprendizaje automático se basa en Pytorch. Se ofrecen dos modelos listos para descargar: primero para la traducción de C++ a Java, Java a C++ y Java a Python, y segundo para transmisión
C++ a Python, Python a C++ y Python a Java. Para entrenar los modelos, utilizamos los códigos fuente de proyectos publicados en GitHub. Si lo desea, se pueden crear modelos de traducción para otros lenguajes de programación. Para comprobar la calidad de la transmisión se ha preparado una colección de pruebas unitarias, así como un conjunto de pruebas que incluye 852 funciones paralelas.

Se afirma que, en términos de precisión de conversión, TransCoder es significativamente superior a los traductores comerciales que utilizan métodos basados ​​en reglas de conversión, y en el proceso de trabajo le permite prescindir de la evaluación experta de expertos en el idioma de origen y de destino. La mayoría de los errores que surgen durante la operación del modelo se pueden eliminar agregando restricciones simples al decodificador para garantizar que las funciones generadas sean sintácticamente correctas.

Facebook está desarrollando TransCoder para traducir código de un lenguaje de programación a otro

Los investigadores propusieron una nueva arquitectura de red neuronal "Transformer" para modelar secuencias, en la que la recurrencia se reemplaza por "atención"(modelo seq2seq con atención), que le permite deshacerse de algunas dependencias en el gráfico computacional y paralelizar lo que antes no era susceptible de paralelización. Todos los lenguajes admitidos utilizan un único modelo común, que se entrena utilizando tres principios: inicialización, modelado de lenguaje y retrotraducción.

Facebook está desarrollando TransCoder para traducir código de un lenguaje de programación a otro

Fuente: opennet.ru

Añadir un comentario