Humanos inteiramente do processo de codificação. Se você trabalhar como codificador, ficará feliz em saber que eles estão errados. Quando eu estava na faculdade, tivemos que escrever código à mão nos exames de ciência da computação.
No papel. Com canetas.
Se aprendeu a codificar a qualquer momento nos últimos dez anos, provavelmente acha que isso soa bárbaro, ineficiente e simplesmente estúpido. E você estaria certo. Mas há também um ponto sério aqui: que as tecnologias que usamos para a programação de computadores estão em constante evolução, e estão fazendo isso muito rápido. Eu me considero sortudo que meus exames não envolviam cartões perfurados.
A próxima grande revolução na prática de codificação pode estar mais próxima do que pensamos, e envolve ajudar os computadores a se codificarem. Ao utilizar o processamento de linguagem natural e redes neurais, alguns pesquisadores pensam que dentro de alguns anos podemos remover os humanos inteiramente do processo de codificação.
Se você trabalhar como codificador, ficará feliz em saber que eles estão errados. Vamos precisar de codificadores humanos por um longo tempo ainda. Neste artigo, explicarei por quê.
Redes neurais e codificação
Primeiro, vamos olhar para esta nova geração de ferramentas de codificação, e ver o que eles podem fazer. A ideia de usar redes neurais, aprendizado de máquina e ferramentas de IA na programação existe há décadas, mas é só agora que as primeiras ferramentas práticas e utilizáveis estão surgindo. Essas ferramentas podem ser divididas em três tipos.
A primeira são ferramentas que visam identificar automaticamente bugs. Esta tem sido uma das aplicações mais bem sucedidas de redes neurais para a programação e certamente tem sido extremamente útil para alguns codificadores. A empresa suíça DeepCode vem liderando esse tipo de ferramenta, mas mesmo sua oferta tem sérias limitações, que chegarei em breve.
Em segundo lugar, há uma gama de ferramentas que visam produzir código básico por si só, ou que podem autocompletar código para programadores. Essas ferramentas estão sendo lançadas em muitas plataformas de desenvolvimento populares. O Facebook criou um sistema chamado Aroma que autocompleta pequenos programas, e o DeepMind desenvolveu uma rede neural que pode criar versões mais eficientes de algoritmos simples do que os criados por humanos.
Em seguida, há a aplicação mais emocionante de redes neurais para a programação: a pesquisa que está sendo feita por uma equipe da Intel, MIT e do Instituto de Tecnologia da Geórgia. Esses pesquisadores desenvolveram um sistema chamado Similaridade de Código Inferido por Máquinas, ou MISIM, que eles afirmam ser capaz de extrair o “significado” de um pedaço de código da mesma forma que os sistemas NLP podem ler um parágrafo de texto gerado pelo homem.
Este sistema MISIM promete ser uma ferramenta revolucionária se todo o seu potencial puder ser realizado. Por ser independente da linguagem, o sistema poderia ler códigos enquanto está sendo escrito e escrever automaticamente módulos para alcançar tarefas comuns. Grande parte do código usado para automatizar backups em nuvem é o mesmo em muitos programas, e os processos de conformidade também são um grande dissipador de tempo para muitos codificadores.
Sistemas como o MISIM prometem tornar o processo de escrita de código muito mais eficiente do que é atualmente, mas eles ainda têm limitações significativas. Vamos dar uma olhada em alguns.
As limitações
Ferramentas de codificação baseadas em redes neurais são improváveis de substituir codificadores humanos tão cedo. Para ver por que vamos olhar para as limitações inerentes às três principais maneiras que essas ferramentas estão sendo usadas.
Primeiro, os programas de ML e IA que são projetados para capturar bugs em código criado por humanos são extremamente úteis, mas apenas até um ponto. No momento — e como você estará dolorosamente ciente se você usou um desses programas — eles tendem a produzir um enorme número de falsos positivos: características que a IA acha que podem ser bugs, mas não são. O fato de essas ferramentas errarem no lado da cautela é, naturalmente, ótimo do ponto de vista do Infosec, mas também é uma indicação de sua capacidade limitada de entender as complexidades da programação contemporânea.
Em segundo lugar, ferramentas como o modelo de linguagem GPT-3 do Aroma e openai podem produzir peças simples de código,mesmo a partir de descrições de linguagem natural, mas apenas sob a direção de humanos. Eles têm um desempenho extremamente bom quando dado um problema limitado e controlado para resolver, mas são (até agora) incapazes de olhar para um resumo de design e trabalhar a melhor abordagem a tomar.
O terceiro tipo de ferramenta que mencionei acima — MISIM e seus sistemas relacionados — é, sem dúvida, o uso mais inovador de redes neurais na codificação, e tem a maior promessa de fazer a diferença real na maneira como trabalhamos. No entanto, deve-se notar que este sistema ainda está nos estágios iniciais de desenvolvimento, e está muito longe até mesmo de um beta público. Vou reter o julgamento sobre suas limitações, portanto, até que eu ponha minhas mãos em uma versão.
Por fim, porém, também vale ressaltar que há uma limitação mais fundamental implícita dentro de todas essas ferramentas: a criatividade.
Em outras palavras, embora essas ferramentas sejam ótimas para completar o código dado um prompt, eles não vão ganhar nenhum prêmio de design, seja para codificação ou design. Mesmo o melhor software de web design tentou e falhou em implementar ferramentas estéticas orientadas à IA — há uma boa razão para isso: os humanos sabem o que parece bom para outros humanos.
Usando essa capacidade estética e criativa tem sido um dos principais focos de paradigmas de codificação nas últimas décadas. É uma das razões, por exemplo, por que muitas das melhores estruturas de desenvolvimento front-end em torno de hoje são tão visualmente orientadas. Os humanos são ótimos em detectar padrões em dados aparentemente não relacionados, e as IA são ótimas em realizar tarefas repetitivas e demoradas.
Colaboração e criatividade
Essa incapacidade de criar novas soluções é a razão pela qual, em última análise, as redes neurais não vão substituir os humanos. Em vez disso, precisa
.png)
.png)
.png)
.png)