Facebook TransCoder usa IA para converter entre C++, Java e Python

Facebook TransCoder foi desenvolvido para converter automaticamente código entre C++, Java, Python e outras linguagens

Emerson Alecrim
Por
• Atualizado há 2 anos e 4 meses
Facebook - inteligência artificial

Muitos desenvolvedores sentem arrepios só de pensar no trabalho que dá converter um código de uma linguagem para outra. E se essa tarefa pudesse ser feita automaticamente, em poucos passos? Essa é a proposta do TransCoder, modelo de conversão de linguagens desenvolvido por pesquisadores do Facebook.

Como é de se imaginar, a ferramenta é baseada em inteligência artificial. A ideia é converter código em linguagem de alto nível — como C++, Java e Python — em outra com o menor nível possível de supervisão ou intervenção humana.

É difícil. Até para um programador experiente, executar esse trabalho frequentemente requer paciência e, como fator principal, bom conhecimento das linguagens de origem e destino.

Transcompiladores (transcompilers) são ferramentas que contribuem com essa tarefa. Graças a elas, o novo código não precisa ser reescrito do zero. Mas, hoje, as vantagens não vão muito além disso: ainda cabe ao desenvolvedor lidar com diferenças de sintaxe, mudanças de biblioteca ou adaptações de APIs, por exemplo.

Nas palavras do próprio Faceboook, o TransCoder vem para ser um transcompilador “neural”, isto é, um transcompilador que utiliza aprendizagem de máquina para fazer todo o trabalho sujo.

O processo começa com um pré-treinamento que mapeia instruções de um código que sãos as mesmas nas linguagens de destino e origem. “Pontos de ancoragem” comuns a muitas linguagens, a exemplos de instruções como “if ou “while” e operadores matemáticos, servem de base para esse trabalho.

Um processo de “retrotradução”, ou seja, de converter o código novamente para a primeira linguagem, permite ao TransCoder gerar dados paralelos para serem comparados aos originais. As diferenças constatadas nesse processo reforçam o treinamento.

A ferramenta foi treinada com mais de 2,8 milhões de repositórios de código aberto disponíveis no GitHub. Também foram realizados testes com 852 funções em C++, Java e Python oriundas do GeeksforGeeks, plataforma que reúne problemas de programação para serem resolvidos (o GeeksforGeeks é ótimo para treinar lógica de programação e habilidades relacionadas; o Spoj também).

Facebook (Foto: Max Pixel)

Os resultados empolgaram. Na conversão de C++ para Java, por exemplo, o TransCoder obteve 74,8% de precisão nos resultados esperados; de Python para C++, 57,8%; de Java para C++, 91,6%.

Por ora, a ferramenta funciona justamente com C++, Java e Python, mas os pesquisadores do Facebook destacam que o TransCoder pode ser treinado para trabalhar com praticamente qualquer linguagem de programação.

O modelo foi desenvolvido para fins acadêmicos, mas, com os devidos aperfeiçoamentos, é possível que o TransCoder encontre utilidade prática: “nossos resultados sugerem que muitos erros cometidos pelo modelo podem ser corrigidos facilmente com a adição de restrições simples ao decodificador para garantir que as funções geradas sejam sintaticamente corretas”, dizem os responsáveis.

É possível saber mais sobre o Facebook TransCoder neste estudo (PDF).

Com informações: VentureBeat.

Receba mais notícias do Tecnoblog na sua caixa de entrada

* ao se inscrever você aceita a nossa política de privacidade
Newsletter
Emerson Alecrim

Emerson Alecrim

Repórter

Emerson Alecrim cobre tecnologia desde 2001 e entrou para o Tecnoblog em 2013, se especializando na cobertura de temas como hardware, sistemas operacionais e negócios. Formado em ciência da computação, seguiu carreira em comunicação, sempre mantendo a tecnologia como base. Em 2022, foi reconhecido no Prêmio ESET de Segurança em Informação. Em 2023, foi reconhecido no Prêmio Especialistas, em eletroeletrônicos. Participa do Tecnocast, já passou pelo TechTudo e mantém o site Infowester.

Relacionados