Facebook TransCoder AI: Converte código de uma linguagem de programação para outra

Um conversor de c√≥digo permite converter um c√≥digo fonte de uma linguagem de programa√ß√£o de alto n√≠vel para outra. Pesquisadores do Facebook desenvolveram o TransCoder AI. √Č um sistema que possibilita a convers√£o de c√≥digo entre linguagens de programa√ß√£o, como Java, Python e C ++. A mudan√ßa de uma base de c√≥digo existente para uma linguagem mais moderna ou eficiente requer um grande n√ļmero de recursos. Em particular, s√£o necess√°rios recursos econ√īmicos e humanos. Em teoria, um conversor pode ajudar a eliminar o custo necess√°rio para reescrever o c√≥digo do zero. No entanto, esse √© um processo dif√≠cil, pois o idioma de origem e o destino t√™m uma sintaxe diferente, vari√°veis ‚Äč‚Äčde tipo, fun√ß√Ķes de biblioteca padr√£o e API da plataforma.

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

O TransCoder AI do Facebook pode ser executado de forma aut√īnoma, com m√≠nima interven√ß√£o humana, para encontrar padr√Ķes n√£o detectados em conjuntos de dados sem tags e ir al√©m dos princ√≠pios b√°sicos como regra, com uma margem “significativa”. Ele pode mapear trechos de c√≥digo que representam as mesmas instru√ß√Ķes em trechos de c√≥digo id√™nticos, independentemente da linguagem de programa√ß√£o usada. A melhor parte do Facebook TransCoder AI √© que ele pode ser facilmente generalizado para qualquer linguagem de programa√ß√£o e n√£o requer nenhum conhecimento especializado para converter senhas 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-fonte aberto do GitHub para se concentrarem na tradu√ß√£o de c√≥digo no n√≠vel operacional. Para avaliar o desempenho do TransCoder AI, eles selecionaram 852 fun√ß√Ķes paralelas nas linguagens de programa√ß√£o C ++, Java e Python da GeeksforGeeks – uma plataforma popular que ensina a codifica√ß√£o de problemas e oferece solu√ß√Ķes em v√°rias linguagens de programa√ß√£o. Usando esses dados, os pesquisadores desenvolveram uma nova medida chamada “precis√£o computacional”, que verifica se as fun√ß√Ķes traduzidas geram as mesmas sa√≠das da entrada de origem.

Resultados do TransCoder AI

Em relação ao nível de precisão nos resultados obtidos pelo TransCoder AI na conversão de senhas, são observados os seguintes:

  • De C ++ para Python: 67,2%
  • De C ++ para Java: 74,8%
  • De Java para C ++: 91,6%
  • De Java para Python: 68,7%
  • De Python para Java: 56,1%
  • De Python para C ++: 57,8%
  • Os pesquisadores afirmam que o TransCoder AI “entendeu” a sintaxe de cada idioma (Java, Python e C ++), juntamente com suas estruturas de dados. Ele at√© conseguiu alinhar as bibliotecas corretamente em cada idioma, enquanto se adapta a pequenas modifica√ß√Ķes, como renomear uma vari√°vel na entrada.

    No entanto, o Transcoder AI n√£o √© perfeito, pois n√£o levou em considera√ß√£o certos tipos de vari√°veis ‚Äč‚Äčao criar c√≥digo. No entanto, foi al√©m da estrutura de “reconstruir” um c√≥digo do zero manualmente, com base no conhecimento de recursos humanos especializados.