A IBM aproveitou a conferência Think 2021 para revelar detalhes de um projeto que pode ajudar a mudar a vida e - os tempos de trabalho - de quem desenvolve software. O CodeNet é um enorme acervo de informação, desenhado com o intuito de facilitar a conversão de código entre linguagem de programação. A Big Blue está a usar inteligência artificial, mais concretamente machine learning, e a tirar partido dos desenvolvimentos feitos ao longo dos últimos anos no processamento de linguagem natural e na tradução automática neuronal, para ensinar a plataforma a traduzir código e a agilizar o chamado debugging. 

O CodeNet não é o único a tentar resolver este problema mas passa a ser o maior, integrando 14 milhões de amostras e 500 milhões de linhas de código, em mais de 55 linguagens de programação, entre linguagens ativas e já em desuso, como sejam o Cobol, Python, Java, C++, entre outras. 

“Acreditamos que o processamento de linguagem natural e o machine learning podem ser aplicados à compreensão de linguagens de computador através de raciocínio e tomada de decisões automáticas, sendo capazes de explicar essas decisões, tal como somos capazes de fazer com a visão por computador e o processamento de linguagem natural”, explicou Ruchir Puri, cientista-chefe da IBM Research ao Engadget.

IBM vai fornecer o primeiro computador quântico privado do mundo a uma clínica de saúde em Cleveland
IBM vai fornecer o primeiro computador quântico privado do mundo a uma clínica de saúde em Cleveland
Ver artigo

A ideia é fazer do CodeNet uma plataforma aberta e acessível a quem queira usar, que tira partido da IA para facilitar não só o processo de migração entre linguagens de software, mas todo um conjunto de tarefas complexas que fazem parte dessa transição. 

Inclui por isso dados para facilitar a identificação de sobreposições e semelhanças entre pedaços de código, personalizar restrições em função dos parâmetros específicos do programador, bem com um conjunto alargado de metadados e anotações para que os algoritmos possam ajudar a distinguir código com e sem problemas. 

“A linguagem de programação pode ser comparada, de forma muito sucinta, a métricas do tipo: o programa responde, faz o que é suposto fazer, se houver um conjunto de testes ele sabe, resolve e cumpre os critérios do teste” exemplifica Ruchir Puri, para explicar que o contexto é determinante para fazer funcionar qualquer tipo de código corretamente, algo que toda esta informação pretende ajudar a fazer. 

Nesse sentido também, o CodeNet vai servir para comparar referências (fazer benchmark) ou mesmo para atalhar a identificação de erros e formas de os ultrapassar, compilando problemas e soluções apresentadas em centenas de concursos e desafios de programação ao longo dos últimos 15 anos. 

“Estamos a tentar fazer aqui o que o ImageNet fez na visão por computador. Mudou completamente o jogo, foi altamente afinado com um conjunto de dados fortemente direcionados para um domínio muito vasto. Esperamos que o CodeNet, com a sua diversidade de tarefas, a sua diversidade de dados e com a sua grande escala, venha a trazer o mesmo valor”, acrescentou o mesmo responsável.