Programação com IA – maldição ou verdadeira bênção? Falámos com programadores que já estão a utilizar a IA generativa sobre este tema.
Por Josh Fruhlinger
A IA generativa desencadeou uma nova corrida ao ouro tecnológico. Grande parte da atenção está centrada nas ferramentas de IA que produzem conteúdos em linguagem natural ou arte visual. Nos círculos tecnológicos, o interesse pelas ferramentas de codificação de IA, em particular, também está a aumentar. É simultaneamente fascinante e assustador descrever a aplicação pretendida a um chatbot – apenas para a ver servida numa bandeja de prata segundos depois sob a forma de código executável.
Como é sabido, há muito que se fala e escreve sobre o assunto – especialmente do ponto de vista de gestores, consultores e especialistas. Por isso, quisemos saber o que os programadores que já estão a programar com IA na prática têm a dizer sobre o assunto.
Abordagens de programação com a IA Gen
Os programadores com quem falámos utilizam o ChatGPT ou o GitHub Copilot. Ambas as ferramentas são capazes de gerar código com base em instruções de linguagem natural. No entanto, o Copilot (e o seu sucessor experimental Copilot X) vai um passo além do modelo de conversação. Funcionam como uma espécie de IDE melhorado com preenchimento automático que “antecipa” aquilo em que os programadores estão a trabalhar.
Aposte na Mega da Virada 2024!
Prepare-se para uma chance única de mudar sua vida. O prêmio histórico de R$ 600 milhões da Mega da Virada 2024 está esperando por você!
Além disso, conheça os bolões da Sorte Online, que são os mais premiados e oferecem as melhores chances de ganhar! Ao participar dos bolões, você se junta a centenas de apostadores e aumenta suas chances de faturar uma bolada.
Faça sua Aposta AgoraVanessa Freudenberg, cofundadora e arquiteta-chefe da Croquet.io, utiliza o GitHub Copilot no seu trabalho diário – em interação com o Visual Studio Code. A programadora explica o benefício essencial com um exemplo prático: “Quando escrevo a linha let x = this.leftMargin + this.width / 2;, a linha seguinte é automaticamente sugerida: let y = this.topMargin + this.height / 2; A IA sabe que “width” e “left” devem ser substituídos por “height” e “top”. Isto poupa-me muita digitação”.
Panickos Neophytou, cofundador e CTO da NetBeez, também se apresentou como um utilizador diário do Copilot X e do ChatGPT – e descreveu duas abordagens diferentes à utilização das ferramentas de IA para ir além do Autocomplete. A primeira é sistemática: “Descrever uma função bem definida com entradas específicas, exemplos de resultados esperados e os modelos de dados envolvidos, que incluem tabelas de bases de dados com ligações implícitas. A IA pode inferir as relações em geral”. Dito isto, uma abordagem mais casual também pode produzir bons resultados, como o CTO sabe por experiência própria: “Enquanto estiver a executar uma tarefa, faça as perguntas que lhe vierem à cabeça. É um pouco como ter um engenheiro experiente sentado ao seu lado e a responder às suas perguntas.”
VAI GOSTAR
Independentemente do método que os programadores utilizem, há uma arte em conduzir corretamente a IA generativa, como confirma Shanea Leven, fundadora e CEO do fornecedor de software CodeSee: “Escolher os verbos e as descrições corretas é essencial para criar bons prompts.”
Programação com IA – Vantagens
Seguem-se alguns casos de utilização em que as ferramentas de IA generativa podem apoiar os programadores de software no seu trabalho quotidiano.
Gerar documentação a partir do código
Como a documentação de software é normalmente um formato bastante estruturado, a IA funciona bem nesta área, como refere Chris Love, fundador da consultora web Love2Dev: “Prefiro utilizar o ChatGPT para adicionar documentação ou comentários ao meu código. Estas são tarefas que normalmente demoram muito tempo a fazer manualmente. Com a IA, é uma questão de um ou dois segundos”.
Criar código a partir de documentação
Este conceito também pode ser invertido: A IA também pode gerar código com base em comentários ou documentação. Um comentário como:
// get file name from our url resulta nesta saída no caso do GitHub Copilot: let fileName = window.location.pathname.split (“/”).pop();
“Provavelmente, eu teria escrito isto de forma um pouco diferente – sou apenas uma rapariga regex”, comenta Freudenberg, acrescentando: “No entanto, este resultado é uma solução simples e legível que eu aceitaria. Não se trata apenas de poupar tempo – por vezes, a IA dá-me ideias de expressões idiomáticas em que eu própria não teria pensado.”
Problemas resolvidos
Os programadores sabem: Parte do seu trabalho é estar constantemente a reinventar a roda. E pode ser frustrante trabalhar numa solução para um problema que, de facto, já existe algures. De acordo com Jeff Wills, Engineering Practice Lead no fornecedor de software Rise8, estas são tarefas que clamam pelo apoio da IA generativa: “Digamos que estou a desenvolver uma forma de calcular a distância entre dois pontos numa esfera. Então, o Copilot encontra automaticamente o algoritmo haversine e gera o código associado.”
Esta abordagem é particularmente prática quando a alternativa ao código gerado pela IA é acrescentar uma biblioteca completa à aplicação, diz o especialista em software: “Acrescentar uma biblioteca de geometria completa ao meu código iria aumentar a base de código. Isso não faz sentido se eu só precisar de um algoritmo. Portanto, restam duas opções: Ou escrevo o algoritmo eu próprio ou utilizo o ChatGPT e o Copilot, respetivamente, para me ajudarem com isso.”
Atualizar ou limpar o código
Love, por outro lado, considera as ferramentas de IA generativa particularmente úteis para atualizar o código que já foi escrito: “Utilizei o ChatGPT para atualizar módulos antigos do Node.js. Antes não tinha tempo para isso”.
Programar mais depressa (?)
Programar com IA acelera ainda mais o trabalho de desenvolvimento – pelo menos é essa a perceção dos nossos entrevistados: “Penso que me ajuda a escrever melhor código mais rapidamente”, diz Love, por exemplo, especificando: “É relativamente difícil de quantificar, mas pessoalmente acho que é tangível”.
Wills também sente que pode iterar através de potenciais soluções mais rapidamente: “Não só acelera o trabalho, mas também permite olhar para mais soluções potenciais. Por isso, em última análise, não é apenas a estrutura temporal que beneficia, mas também a qualidade.”
Programação com IA – Armadilhas
Apesar do entusiasmo geral pela IA generativa no domínio do desenvolvimento de software: os especialistas estão conscientes de que os sistemas de IA têm várias armadilhas.
Programar com IA – não sem o básico
Mesmo que os chatbots de IA pareçam “mágicos” – para que possam conduzir aos resultados desejados, precisam de dados tão específicos quanto possível.
Liam Edwards, CEO de uma empresa de web design, explica: “Neste momento, é necessário dar às ferramentas o máximo de informação possível sobre o seu problema de programação. Por exemplo, se eu desse a instrução: ‘Escreva-me um código CSS personalizado que torne o fundo do botão branco’, obteria um código que poderia funcionar. A instrução ‘Escreva-me um código CSS personalizado que torne o fundo de um botão branco (a classe do botão é .button)’ daria um resultado muito mais preciso.”
Edwards diz que isto ilustra um ponto crucial quando se trata de programar com IA: “É necessário ter experiência e conhecimentos para tirar o máximo partido destas ferramentas. Um utilizador que não saiba programar bem demorará mais tempo, mesmo com a IA generativa, e acabará por obter uma qualidade inferior.”
Tarefas simples de preferência
Peter Surowski, CTO da agência de design e desenvolvimento Web Brain Jar, também utiliza ferramentas de IA para fins de codificação, mas relativiza: “Mas apenas para pequenas tarefas para as quais, de outra forma, utilizaria o Google – como quando preciso de um código padrão para configurar algo. Ou quando me esqueço em cima da hora de como escrever uma instrução switch numa determinada linguagem de programação. Para todas as tarefas para além disso, a IA generativa é inútil”.
Leven também vê atualmente um âmbito limitado para a IA Gen no desenvolvimento de software – mas espera firmemente que isso mude fundamentalmente no futuro: “O verdadeiro valor acrescentado virá quando for possível fazer perguntas sobre a base de código específica de uma empresa e depois deixar a IA fazer o trabalho real. Isso será um verdadeiro fator de mudança”.
Os testes são obrigatórios
A maioria das equipas de desenvolvimento de software depende agora de sistemas em que o seu código tem de passar por testes extensivos e automatizados antes de entrar em produção. Neste momento, o código gerado por IA não é exceção.
Embora isto não seja uma desvantagem em si, pode causar desilusão para aqueles que têm ideias irrealistas sobre o que a tecnologia pode fazer, salienta Love: “É claro que também é necessário rever e testar completamente o código gerado pela IA. Há demasiados programadores que, no passado, aceitaram o que está no Stack Overflow como correto. Não deve ser diferente com o ChatGPT”.
Portanto, não basta copiar e colar o código gerado com o ChatGPT ou o GitHub Copilot – pelo contrário: “Na maioria das vezes, o código ainda precisa de ser um pouco refinado – mas pelo menos não precisa de ser fundamentalmente reescrito”, diz Neophytou.
A segurança em foco
Cada nova tecnologia utilizada para programar abre inevitavelmente uma superfície de ataque para os agentes maliciosos. As consequências são difíceis de avaliar. Num exemplo recente, investigadores de segurança descobriram uma forma de espalhar código malicioso através de alucinações ChatGPT.
De certa forma, as atuais limitações da IA generativa funcionam como barreiras de segurança incorporadas, diz Love: “Penso que os limites de tamanho dos tokens ou do prompt/resposta fornecem uma espécie de proteção contra o código malicioso, porque obriga os programadores a rever tudo em pequenas porções”.
LEIA TAMBÉM