Pesquisadores em Facebook desenvolveram um novo sistema de IA (inteligência artificial) que converte o código-fonte de uma linguagem de programação de alto nível para outra.
Chamado de “TransCoder”, esta ferramenta de conversão de linguagem baseada em AI pode traduzir entre linguagens de alto nível, como C ++, Java e Python em um código diferente com alta precisão.
O estudo de pesquisa foi detalhado no artigo intitulado “Tradução não supervisionada de linguagens de programação”.
Converter o código de uma linguagem de programação para outra é uma tarefa difícil até mesmo para um programador experiente, pois requer conhecimento da linguagem de origem e da linguagem de destino, tornando os projetos de tradução de código caros.
Os transcompiladores eliminam a necessidade de reescrever o novo código do zero. No entanto, ainda é uma tarefa complicada para um desenvolvedor lidar com diferentes linguagens que podem ter uma sintaxe diferente, alterações de biblioteca, tipos de variáveis e adaptação de IA.
FacebookO TransCoder “Neural Translator” da empresa cuida de todos esses problemas com uma abordagem de aprendizagem não supervisionada. Isso significa que ele pode ser executado sem supervisão com uma quantidade mínima de supervisão ou intervenção humana para encontrar padrões previamente não detectados em conjuntos de dados sem rótulos e superar as linhas de base comerciais baseadas em regras por uma margem “significativa”.
No artigo, os pesquisadores propam aplicar abordagens recentes em tradução automática não supervisionada, aproveitando uma grande quantidade de código-fonte monolíngue do GitHub para treinar um modelo, TransCoder, para traduzir entre três linguagens populares: C ++, Java e Python.
De acordo com o artigo, o modelo do transcodificador funciona com base em três princípios principais:
A ferramenta foi treinada com mais de 2.8 milhões de GitHub de código aberto. Facebook A equipe de pesquisa também realizou testes com 852 funções paralelas em C ++, Java e Python da GeeksforGeeks, uma plataforma online que reúne problemas de codificação e apresenta soluções em diversas linguagens de programação.
Usando os dois dados acima, eles desenvolveram uma nova métrica – precisão computacional – que verifica se as funções traduzidas geram as mesmas saídas que uma referência com as mesmas entradas.
Por exemplo, ao converter de C ++ para Java, TransCoder atingiu 74.8% de precisão nos resultados esperados, enquanto a conversão de Python para C ++ viu 57.8% de precisão, enquanto Java para C ++, a precisão é 91.6%
“Embora nunca tenha dados paralelos, o modelo consegue traduzir funções com alta precisão e alinhar adequadamente as funções da biblioteca padrão nas três línguas, superando as linhas de base comerciais e baseadas em regras por uma margem significativa”, escreveu o co- autores no artigo.
“Nossa abordagem é simples, não requer nenhum conhecimento nas linguagens de origem ou destino e pode ser facilmente estendida para a maioria das linguagens de programação. Embora não seja perfeito, o modelo pode ajudar a reduzir a quantidade de trabalho e o nível de conhecimento necessário para traduzir com sucesso uma base de código. ”