Um novo sistema do Laboratório de Ciência da Computação e Inteligência Artificial do MIT, nos EUA, faz algo incrível para consertar softwares cheios de bugs: ele pega emprestado código saudável de outros aplicativos, e então corrige os erros sem precisar acessar o código-fonte original.

Pense nisso como um transplante de órgão. Mas, nesse caso, o paciente doente é um software bugado, e o “doador de órgão” é um pedaço de código de outro aplicativo, mesmo que tenha sido escrito em uma linguagem completamente diferente.

A metáfora é imperfeita, mas ajuda um pouco a explicar o CodePhage, um sistema apresentado por pesquisadores do MIT durante a conferência Programming Language Design and Implementation realizada em junho.

Os criadores do CodePhage explicam ao MIT News: um programa com um bug é o “destinatário”. Quando o CodePhage identifica um bug, ele busca por uma correção a partir de uma série de outros programas e repositórios. Assim que encontra um pedaço de código “doador” bom, ele corrige o destinatário e faz testes para ver se aquilo ficou bem encaixado – e tudo isso sem em nenhum momento ganhar acesso ao código-fonte. Ele continua fazendo isso até encontrar o doador ideal.

O mais legal nesse sistema é que ele consegue corrigir bugs usando soluções que podem nem ter sido escritas na mesma linguagem, criando uma espécie de mosaico de boas ideias a partir de uma ampla gama de fontes. Você pode ler com mais detalhes seu funcionamento na apresentação de um dos seus criadores, Martin Rinard (em inglês).

Ao MIT News, Rinard explicou como o CodePhage faz parte de um projeto de criação de um sistema que vai reduzir a necessidade de novos códigos:

“A visão para o longo prazo é que você nunca mais precisará escrever um código que outra pessoa já escreveu”, diz Rinard. “O sistema encontra esse pedaço de código e automaticamente junta com os outros que você precisa para fazer seu programa funcionar.”

Os detalhes de como o sistema checa várias vezes as correções usando uma expressão simbólica são complexos, claro. Mas mesmo a partir da perspectiva de um leigo, é fácil ver como isto pode ser o precursor de sistemas que constantemente procuram bugs e aplicam correções, aproveitando a inteligência coletiva de vários autores e fontes para criar programas melhores. [MIT News]

Foto por waiam cia/Flickr