Pular para o conteúdo

Inteligência Artificial aprende a escrever o seu próprio código roubando de outros programas

Saia do caminho, humano. Um método de aprendizagem de máquina ganhou a habilidade de escrever seu próprio código.

Criado por pesquisadores da Microsoft e da Universidade de Cambridge, o método, chamado DeepCoder[1], resolveu desafios básicos daqueles feitos em concursos de programação. Este tipo de abordagem poderá tornar muito mais fácil para pessoas construírem programas simples sem saber como escrever códigos.

“De repente, as pessoas podem ser muito mais produtivas”, diz Armando Solar-Lezama, do Instituto de Tecnologia de Massachusetts (MIT), que não estava envolvido no trabalho. “Elas poderão construir sistemas que eram impossíveis de serem construídos antes”.

Em última análise, o protótipo poderá permitir que não programadores simplesmente possam traçar uma ideia para um programa e deixar que o sistema desenvolva, diz Marc Brockschmidt, um dos criadores da DeepCoder na Microsoft Research em Cambridge, Reino Unido.

O DeepCoder usa uma técnica chamada síntese de programa: cria novos programas reunindo linhas de código retiradas de um software existente – assim como um programador faria. Dada uma lista de entradas e saídas para cada fragmento de código, o DeepCoder aprendeu quais pedaços de código eram necessários para alcançar o resultado desejado.

“Ele pode permitir a não programadores possam simplesmente descrever uma ideia para um programa e deixá-lo desenvolver o programa desejado”.

Uma das vantagens de deixar uma IA seguir este caminho é que ela procura de forma mais minuciosa e mais ampla que um programador humano, então ela pode reunir as partes de um código fonte de maneiras que humanos não pensariam. Ainda por cima, o DeepCoder usa aprendizado de máquina para depurar a base de dados de um código fonte e ordenar os fragmentos de acordo com sua visão probabilística de quão útil é o fragmento.

Por que não devemos temer a Inteligência Artificial?

Tudo isso faz este sistema muito mais rápido que seu predecessores. O DeepCoder criou programas em frações de segundo, enquanto sistemas antigos levam minutos para testar muitas combinações diferentes de linhas de código antes de colocar junto algo que possa fazer o serviço. Como o DeepCoder aprende quais combinações do código-fonte funcionam ou e quais não funcionam conforme ele avança, ele melhora cada vez mais quando encontra um novo problema.

A tecnologia pode ter muitas aplicações. Em 2015, os pesquisadores do MIT criaram um programa[2] que automaticamente conserta bugs de programas substituindo a linhas erradas do código por linhas de outros programas que funcionam. Brockschmidt diz que futuras versões podem muito facilmente construir rotinas de programas que garimpam informações de websites ou categorizar automaticamente fotos do Facebook, por exemplo, sem que os programadores tenham que mover um dedo.

“O potencial de automação que este tipo de tecnologia oferece pode significar uma enorme redução na quantidade de esforço que leva para desenvolver um código”, diz Solar-Lezama.

Mas ele não acha que esses sistemas irão tomar os empregos de programadores. Com o programa sintetizando algumas das partes mais tediosas da codificação, ele afirma, os programadores serão capazes de dedicar seus tempos a um trabalho mais sofisticado do programa.

Neste momento, o DeepCoder é capaz apenas de resolver desafios de programação que envolvem cerca de de cinco linhas de código. Mas na linguagem de programação certa, uma poucas linhas é tudo que é necessário para programas bastante complicados.

“Gerar uma parte realmente grande de um código de uma vez é difícil, e potencialmente irrealista”, diz Solar-Lezama. “Mas grandes pedaços de código são construídos colocando várias pequenas partes de código juntas”.

Este artigo foi publicado na versão impressa sob o título “Computers are learning to code for themselves” (Computadores estão aprendendo a programar eles mesmos, em tradução livre)

Tradução da New Scientist feita por Diógenes Henrique e Euclécio Josias

[1] Paper do DeepCoder: https://openreview.net/pdf?id=ByldLrqlx
[2] Paper do MIT: http://people.csail.mit.edu/rinard/paper/popl16.pdf

Euclécio J. R.

Euclécio J. R.

Engenheiro de software na Codenation