A tecnologia de inteligência artificial já vem sendo explorada há um tempo, resultando em diferentes tipos de aplicações nos mais variados campos. Uma delas, inclusive, é a própria área da computação, como exemplificado pelo PolyCoder, que é um modelo gerador de código automatizado.
Desenvolvida por pesquisadores da Carnegie Mellon University, nos Estados Unidos, a ferramenta foi treinada em múltiplas linguagens de programação. No entanto, segundo seus criadores, o modelo é especializado em linguagem C.
O objetivo principal do PolyCoder é democratizar as pesquisas realizadas no campo de geração de código por inteligência artificial. Atualmente, a área é dominada por empresas que recebem investimentos de gigantes do mercado, como a DeepMind, propriedade da Alphabet, e OpenAI, apoiada pela Microsoft.
Conforme explicam os autores do estudo em seu artigo, os modelos de linguagem de programação já apresentaram grande potencial em completar e sintetizar código a partir de descrições em linguagem natural. O problema é que muitos deles não estão publicamente disponíveis, o que torna muitos modelos questionáveis.
Potencial das ferramentas de geração de código
Apesar do Codex, apresentado pela OpenAI em agosto do ano passado, estar disponível através da ferramenta Copilot do GitHub, nem todos os recursos são gratuitos e muitos dados não podem ser acessados, pontuam os pesquisadores no novo artigo.
O objetivo dessas ferramentas de geração de código é que elas possam economizar parte do tempo dos desenvolvedores. Para isso, os resultados devem ser precisos e livres de qualquer falha de segurança.
Os modelos existentes apresentam resultados promissores, com o AlphaCode, desenvolvido pela DeepMind, classificando-se entre os 54,3% melhores participantes humanos em concursos de programação.
Um dos desafios identificados, no caso, foi a quantidade de tempo necessária para treinar o modelo. Além disso, os autores do estudo afirmam que o fato de as melhores ferramentas não estarem publicamente disponíveis impede que elas sejam utilizadas em contextos externos às grandes empresas que as financiam e limita as pesquisas realizadas na área por organizações que contam com poucos recursos.
Desempenho excepcional em linguagem C
A resposta encontrada pelos pesquisadores foi a criação do PolyCoder, um modelo treinado a partir de 249 GB de 12 linguagens de programação diferentes. No caso da linguagem C, o PolyCoder foi capaz de superar todos os modelos, incluindo o Codex.
Os dados utilizados para treinar a ferramenta foram obtidos de vários repositórios do GitHub e incluíam 12 linguagens de programação populares: C, C#, C++, Go, Java, JavaScript, PHP, Python, Ruby, Rust, Scala e TypeScript.
Apesar do PolyCoder apresentar um desempenho excepcional na linguagem C, o Codex ainda foi capaz de superá-lo em outras linguagens.
Segundo os pesquisadores, em comparação com os modelos open-source, o PolyCoder teve resultados melhores em C, JavaScript, Rust, Scala e TypeScript. Já no caso das outras 11 linguagens, com exceção de C, o Codex mostrou um desempenho superior aos modelos de código aberto.