FacebookO TransCoder usa AI para converter o código de uma linguagem de programação para outra

FacebookO TransCoder usa AI para converter o código de uma linguagem de programação para outra 1

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 propuseram 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:

  • O primeiro princ√≠pio inicializa o modelo com um pr√©-treinamento multil√≠ngue do modelo de linguagem mascarada. Como resultado, peda√ßos de c√≥digo que expressam as mesmas instru√ß√Ķes s√£o mapeados para a mesma representa√ß√£o, independentemente da linguagem de programa√ß√£o.
  • Em seguida, vem a codifica√ß√£o autom√°tica Denoising, onde o decodificador √© treinado para gerar sequ√™ncias v√°lidas mesmo quando alimentado com dados ruidosos, e aumenta a robustez do codificador para ru√≠do de entrada.
  • Finalmente, existe um processo de ‚Äúretrotradu√ß√£o‚ÄĚ que √© usado para converter o c√≥digo de volta para o primeiro idioma. Isso permite que o TransCoder gere dados paralelos para serem comparados aos originais. A diferen√ßa encontrada neste processo √© utilizada para refor√ßar o treinamento.
  • 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. ‚ÄĚ