Redes neurais podem ajudar os computadores a se codificarem: ainda precisamos de codificadores humanos?

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. 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, precisamos identificar quais tarefas são melhor feitas pelas IA, e quais são melhor feitas pelos humanos, em seguida, construir uma abordagem colaborativa para codificação que se baseia nos pontos fortes de ambos.

 

Há alguns caminhos claros para a frente quando se trata de fazer isso. Uma delas é usar ferramentas de codificação de IA para treinar desenvolvedores humanos de uma maneira muito mais flexível, eficiente e direcionada do que é atualmente possível em nosso sistema educacional. Pode ser, por exemplo, que sistemas de recomendação automatizados possam ser usados para ensinar segurança de programação para iniciantes, fornecendo orientações detalhadas sobre a segurança de sistemas da vida real à medida que estão sendo codificados.

 

Em segundo lugar, as IA estão mostrando grande promessa quando se trata de acompanhar as atividades dos codificadores humanos e tornar seu trabalho mais eficiente. Um bom exemplo disso são as faturas automáticas que muitas empresas usam agora, nas quais um sistema ML é usado para acompanhar as atividades dos funcionários humanos. De fato, fornecer a cada codificador humano um assistente de IA que aprende como eles funcionam e, em seguida, faz recomendações com base em suas soluções anteriores, seria de grande benefício para a maioria dos desenvolvedores.

 

Em terceiro lugar, sistemas como o MISIM, mesmo que não sejam capazes de automatizar totalmente a escrita de código, podem ter um benefício ligeiramente inesperado: eles podem ser usados para reescrever sistemas legados. Como ferramentas como o MISIM são independentes de plataforma, eles poderiam potencialmente ensinar-se a entender linguagens antigas (e agora bastante obscuras) de codificação como o COBOL e, em seguida, reescrever esses programas em um formato utilizável como python. Quem ainda usa COBOL, você pergunta? Bem, o governo dos EUA, por exemplo.

 

Todas essas abordagens não buscam substituir os codificadores humanos por análogos de máquinas. Na verdade, todos eles são informados por um paradigma diferente: que quando se trata de codificação, humanos e máquinas podem trabalhar juntos como colegas, e não como rivais.

 

Ponto-chave

 

Isso pode soar como uma visão de utopia, mas ter uma visão mais longa e você verá que é uma que é eminentemente viável. Em muitos aspectos, o advento das ferramentas de IA e ML na codificação espelha o desenvolvimento prévio de ferramentas de codificação gráfica e até mesmo das próprias linguagens de programação. Nem suas ferramentas de desenvolvimento front-end nem seus scripts python interagem com seu hardware em um nível fundamental: tudo, para não esquecermos, precisa ser traduzido para código de máquina binária.

 

Ver a codificação como um processo de "tradução" pode estar fora de moda agora, mas foi uma abordagem que certamente informou meu próprio treinamento. Há duas décadas, nos ensinaram explicitamente como nosso código seria convertido em linguagem de montagem; hoje em dia, essa abordagem parece ser uma total perda de tempo.

 

Em última análise, é isso que o desenvolvimento de ferramentas de codificação de IA busca ampliar. O objetivo final aqui é que sistemas como o MISIM sejam capazes de pegar uma descrição de um programa de computador — ou até mesmo uma descrição de um problema a ser resolvido — e produzir um programa por conta própria. Mas é importante lembrar que a descrição ainda será dada por um humano.

 

 

O Avance Network é uma comunidade fácil de usar que fornece segurança de primeira e não requer muito conhecimento técnico. Com uma conta, você pode proteger sua comunicação e seus dispositivos. O Avance Network não mantém registros de seus dados; portanto, você pode ter certeza de que tudo o que sai do seu dispositivo chega ao outro lado sem inspeção.


Strong

5178 Blog postovi

Komentari