MIE, 10 / JUN / 2020

Facebook desarrolla programa que realiza migraciones de lenguaje sin supervisión humana

El sistema utiliza mecanismos de aprendizaje automático para mejorar sus resultados. Algunos elementos en común en todos los lenguajes le permiten identificar patrones complejos y reconstruirlos.

Un grupo de investigadores de Facebook han desarrollado un transcodificador neuronal. Este sistema convierte el código de un lenguaje de programación de alto nivel en código de otro lenguaje de alto nivel.

Aún más destacado resulta el hecho de que esta operación se realiza casi sin supervisión humana, buscando patrones aún no detectados en los sets de datos. Los resultados son superiores a los conseguidos con sistemas basados en reglas.

Los costos de los cambios

La migración de un sistema de un lenguaje a otro es un proceso complejo y a menudo costoso. Un ejemplo ilustrador es el del Commonwealth Bank de Australia, que necesito unos 5 años y USD 750 millones para pasar su plataforma de COBOL a Java.

Aunque los sistemas de migración automatizados son de gran ayuda, las diferencias en las sintaxis de los lenguajes, funciones de bibliotecas y otros tantos detalles hacen que estas herramientas sean costosas.

La solución de Facebook

El transcodificador de Facebook trabaja con C++, Java y Python.

El sistema ha sido entrenado con un modelo multilenguaje para identificar fragmentos de código que expresan las misma instrucciones. Algunas palabras en común resultan claves para esta operación, los términos en inglés if, for, while, etcétera. Algo similar ocurre con los operadores matemáticos.

Un segundo proceso de entrenamiento le enseña al sistema a generar secuencias de código válidas aún cuando recibe datos con cierta cantidad de ruido.

Al mismo tiempo el sistema genera datos que pueden ser utilizados para el entrenamiento. Los datos son comparados con un resultado objetivo esperado.

Resultados

Los resultados obtenidos están lejos de ser ideales, pero son prometedores. Las conversiones de C++a Java, coincidieron en un 74,8% con el código objetivo. Las de C++ a Python un 67,2%.

De Java a C++ se consiguio un 91,6% de acierto, de Java a Python un 68,7%.

De Python a Hava se obtuvo un 56,1% y de Python a c++ un 57,8%.

Según los desarrolladores el transcodificador demostró entender la sintaxis de los lenguajes así como la estructura de los datos, y manejó correctamente las bibliotecas al mismo tiempo que se adaptaba a la necesidad de ciertas modificaciones.

El programa es capaz de reconocer patrones complejos. Algunos de sus errores se estima que podrán ser corregidos fácilmente.

¡Comparte esta noticia!