NOTÍCIAS

[ANONYMOUS][grids]

Facebook TransCoder é nova ferramenta que converte linguagens de programação com IA entre Java, Python e C ++


Todoss ranscompilers podem converter o código fonte de uma linguagem de programação de alto nível para outra. Os pesquisadores do Facebook também desenvolveram um 'transcompilador neural' chamado TransCoder AI . É um sistema que pode converter código entre linguagens de alto nível, como Java, Python e C ++.
A migração de uma base de código existente para uma linguagem mais moderna ou eficiente requer uma enorme quantidade de recursos, financeiros e de mão-de-obra. Em teoria, os transcompiladores podem ajudar a eliminar essa despesa necessária para reescrever o código do zero.
No entanto, eles são difíceis de construir na prática porque a linguagem de origem e de destino tem sintaxe, tipos de variáveis, funções de biblioteca padrão e APIs de plataforma diferentes.

TransCoder AI: um conversor de código para qualquer linguagem de programação

O TransCoder AI do Facebook enfrenta esses desafios com uma abordagem de aprendizado não supervisionada. Ele pode ser executado sem supervisão com uma quantidade mínima de intervenção humana para encontrar padrões não detectados em conjuntos de dados sem rótulos e superar as linhas de base baseadas em regras por uma margem "significativa".
O transcompilador neural pode mapear trechos de código representando as mesmas instruções para trechos de código idênticos, independentemente da linguagem de programação usada.
A melhor parte do Facebook TransCoder é que ele pode ser facilmente generalizado para qualquer linguagem de programação e não requer nenhum conhecimento especializado para converter códigos de uma linguagem de programação para outra.

Precisão do TransCoder AI


Os pesquisadores do Facebook treinaram o TransCoder AI em um código disponível ao público em mais de 2,8 milhões de repositórios de código aberto no GitHub para se concentrarem na tradução de código no nível da função.
Para avaliar o desempenho do TransCoder AI, eles escolheram 852 funções paralelas em C ++, Java e Python da GeeksforGeeks - uma plataforma popular que ensina a codificar problemas e oferece soluções em várias linguagens de programação.
Usando os dois dados acima, eles desenvolveram uma nova métrica chamada “precisão computacional” que verifica se as funções traduzidas geram as mesmas saídas com as mesmas entradas que no idioma de origem.

Os resultados

Aqui está o nível de precisão nos resultados obtidos pela IA ao converter códigos de
  • C ++ para Java: 74,8%
  • C ++ para Python: 67,2%
  • Java para C ++: 91,6%
  • Java para Python: 68,7%
  • Python para Java: 56,1%
  • Python para C ++: 57,8%
Os pesquisadores dizem que o TransCoder AI exibiu um entendimento da sintaxe de cada linguagem (Java, Python e C ++) junto com suas estruturas de dados. Ele até conseguiu alinhar corretamente as bibliotecas em cada idioma enquanto se adapta a pequenas modificações - por exemplo, renomear uma variável na entrada.
Embora o Transcoder não seja exatamente perfeito, pois falhou em contabilizar certos tipos de variáveis ​​durante a geração do código. No entanto, superou as estruturas que reescrevem regras criadas manualmente usando o conhecimento de especialistas humanos.