.

Então. Programação. Para as pessoas que ganham a vida programando, é um jogo constante de Jenga mental: uma linha de código empilhada sobre a outra, construindo uma torre de código que você espera que seja robusta o suficiente para não desabar.
Mas sempre acontece. O código nunca funciona na primeira vez que é executado. E assim, uma das principais habilidades para qualquer programador é a depuração – a arte e a ciência de descobrir por que o código não está sendo executado ou está fazendo algo inesperado ou indesejável.
Também: Como usar o ChatGPT para escrever código
É um pouco como ser um detetive, encontrar pistas e depois descobrir o que essas pistas estão tentando lhe dizer. É muito frustrante e muito gratificante, às vezes exatamente ao mesmo tempo.
Eu faço muita depuração. Não é apenas porque o código nunca funciona na primeira vez que é executado. É também porque eu uso a depuração para me dizer como o código está sendo executado e, em seguida, ajustá-lo ao longo do caminho.
Mas, embora uma boa depuração exija seu próprio conjunto especial de habilidades, também é apenas programação. Depois de descobrir por que algum bloco de código não está funcionando, você precisa descobrir como escrever algo que funcione.
Teste ChatGPT do mundo real
Esta semana, trabalhei em três tarefas de codificação para software que mantenho. Dois foram correções de bugs relatados pelos usuários. Um deles era um novo pedaço de código para adicionar um novo recurso. Este foi um trabalho de programação real e comum para mim. Fazia parte do meu horário de trabalho regular.
Também: Como funciona o ChatGPT?
Estou lhe dizendo isso porque, até agora, testei o ChatGPT com código de teste. Eu criei cenários para ver como o ChatGPT funcionaria. Desta vez foi diferente. Eu estava tentando fazer um trabalho real e decidi ver se o ChatGPT poderia ser uma ferramenta útil para fazer esse trabalho.
É uma maneira diferente de olhar para o ChatGPT. Os cenários de teste costumam ser um pouco artificiais e simplistas. A codificação do mundo real está, na verdade, retirando outro tíquete de suporte ao cliente da pilha e trabalhando no que fez a experiência do usuário ir para o sul.
Então, com isso, vamos olhar para essas tarefas e ver o desempenho do ChatGPT.
Reescrevendo o código de expressão regular
Na codificação, temos que encontrar muitos padrões no texto. Para fazer isso, usamos uma forma de matemática simbólica chamada expressões regulares. Escrevo expressões regulares há décadas e ainda não gosto de fazê-lo. É tedioso, propenso a erros e misterioso.
Também: Estou usando o ChatGPT para me ajudar a corrigir o código mais rapidamente, mas a que custo?
Então, quando um relatório de bug chegou me dizendo que uma parte do meu código estava permitindo apenas números inteiros quando deveria permitir dólares e centavos (em outras palavras, algum número de dígitos, possivelmente seguido por um ponto, e então se houvesse um ponto, seguido por mais dois dígitos), eu sabia que precisaria usar codificação de expressão regular.
Como acho isso tedioso e chato, decidi pedir ajuda ao ChatGPT. Aqui está o que eu perguntei:
E aqui está a resposta muito bem apresentada da IA (clique no pequeno quadrado para ampliar):
Coloquei o código do ChatGPT em minha função e funcionou. Em vez de cerca de 2 a 4 horas puxando os cabelos, demorou cerca de cinco minutos para chegar ao prompt e obter uma resposta do ChatGPT.
Reformatando um array
Em seguida foi reformatar uma matriz. Eu gosto de fazer código de matriz, mas também é tedioso. Então, mais uma vez, tentei o ChatGPT. Falha total.
Também: Como fazer com que o ChatGPT forneça fontes e citações
Quando terminei, provavelmente alimentei dez prompts diferentes. Algumas respostas pareciam promissoras, mas quando tentei executar o código, deu erro. Algum código falhou. Alguns códigos de erro gerados por código. E algum código foi executado, mas não fez o que eu queria.
Após cerca de uma hora disso, desisti e voltei à minha técnica normal de vasculhar o Github e o StackExchange para ver se havia algum exemplo do que eu estava tentando fazer e, em seguida, escrever meu próprio código.
Até agora, é uma vitória e uma derrota para a experiência do ChatGPT. Mas agora eu estava indo para cima do desafio.
Na verdade, encontrando o erro no meu código
OK, então este próximo bit vai ser difícil de explicar. Mas pense no fato de que se é difícil explicar para você (presumivelmente um ser humano e não um dos cerca de 50 bots que simplesmente copiam e republicam meu trabalho em sites fraudulentos e com spam), é ainda mais desafiador explicá-lo a um IA.
Também: O que é GPT-4? Aqui está tudo o que você precisa saber
Eu estava escrevendo um novo código. Eu tinha uma função que recebia dois parâmetros e uma instrução de chamada que enviava dois parâmetros para o meu código. As funções são pequenas caixas pretas que executam funções muito específicas e são chamadas (solicitadas para fazer sua mágica) a partir de linhas de código executadas em outras partes do programa.
O problema era que eu continuava recebendo uma mensagem de erro.
A parte saliente dessa mensagem é onde ela afirma “1 aprovado” em um ponto e “exatamente 2 esperados” em outro. Eu olhei para a instrução de chamada e a definição da função e havia dois parâmetros em ambos os lugares.
Também: Como usar o ChatGPT para resumir um livro, artigo ou trabalho de pesquisa
Q-o-sempre-amoroso-F?
Após cerca de quinze minutos de profunda frustração, decidi jogá-lo para a IA para ver se poderia ajudar. Então, escrevi o seguinte prompt:
Mostrei a linha de código que fez a chamada, mostrei a função em si e mostrei o manipulador, um pequeno pedaço de código que despacha a função chamada de um gancho em meu programa principal.
Em segundos, o ChatGPT respondeu com isso (clique no pequeno quadrado para ampliar):
Assim como sugerido, atualizei o quarto parâmetro da função add_filter() para 2 e funcionou!
O ChatGPT pegou segmentos de código, analisou esses segmentos e me forneceu um diagnóstico. Para ser claro, para fazer sua recomendação, ele precisava entender o funcionamento interno de como o WordPress lida com ganchos (é isso que a função add_filter faz) e como essa funcionalidade se traduz no comportamento das linhas de código de chamada e execução.
Além disso: pedi ao ChatGPT para escrever um plugin WordPress que eu precisava. Fiz isso em menos de 5 minutos
Eu tenho que marcar isso como incrível, inegavelmente “viver no futuro” incrível.
O que tudo isso significa?
Como mencionei anteriormente, a depuração é um pouco de arte e um pouco de ciência. A maioria dos bons ambientes de desenvolvimento inclui ferramentas de depuração poderosas que permitem que você veja o fluxo de dados através do programa enquanto ele é executado, e isso ajuda ao tentar rastrear bugs.
Além disso: esses especialistas estão correndo para proteger a IA de hackers
Mas quando você está preso, muitas vezes é difícil obter ajuda. Isso porque mesmo um colega próximo pode não estar familiarizado com o escopo completo do código que você está depurando. O programa em que estou trabalhando consiste em 153.259 linhas de código em 563 arquivos – e, no que diz respeito aos programas, isso é pequeno.
Então, se eu quisesse obter ajuda de um colega, poderia ter que construir uma solicitação quase idêntica à forma como a enviei para o ChatGPT.
Mas aqui está algo a considerar: lembrei-me de incluir a linha do manipulador, embora não tenha percebido que era onde estava o erro. Como teste, também tentei pedir ao ChatGPT para diagnosticar meu problema em um prompt em que não incluí a linha do manipulador e não foi capaz de ajudar. Portanto, há limitações muito definidas para o que o ChatGPT pode fazer para depuração agora, em 2023.
Também: Os melhores chatbots de IA para experimentar
Essencialmente, você precisa saber como fazer as perguntas certas da maneira certa, e essas perguntas precisam ser concisas o suficiente para que o ChatGPT lide com tudo em uma consulta. Isso é algo que exige conhecimento e experiência reais em programação para saber como fazer.
Eu poderia ter corrigido o bug sozinho? Claro. Nunca tive um bug que não pudesse consertar. Mas se teria levado duas horas ou dois dias (mais pizza, palavrões e muita cafeína) enquanto suportava muitas interrupções, isso é algo que eu não sei. Posso dizer que o ChatGPT o corrigiu em minutos, economizando muito tempo e frustração.
Olhando para o futuro (possivelmente distópico)
Vejo um futuro muito interessante, onde será possível alimentar o ChatGPT com todas as 153 mil linhas de código e pedir para ele te dizer o que consertar. A Microsoft (dona do Github) já está trabalhando em uma ferramenta “co-piloto” para o Github para ajudar os programadores a criar código. A Microsoft também investiu bilhões de dólares na OpenAI, criadora do ChatGPT.
Embora o serviço possa estar limitado aos próprios ambientes de desenvolvimento da Microsoft, posso ver um futuro em que a IA terá acesso a todo o código no Github e, portanto, todo o código em qualquer projeto que você postar no Github.
Também: Pedi ao ChatGPT para escrever um episódio curto de Star Trek. Na verdade deu certo
Dado o quão bem o ChatGPT identificou meu erro no código que forneci, posso definitivamente ver um futuro em que os programadores podem simplesmente pedir ao ChatGPT (ou um equivalente da marca Microsoft) para encontrar e corrigir bugs em projetos inteiros.
E é aqui que eu levo esta conversa para um lugar muito escuro.
Imagine que você pode pedir ao ChatGPT para olhar para o seu repositório Github para um determinado projeto e encontrar e corrigir bugs. Uma maneira pode ser apresentar cada bug que encontrar para aprovação, para que você possa fazer as correções.
Mas e a situação em que você pede ao ChatGPT para apenas corrigir os bugs e deixa que ele o faça sem se preocupar em examinar todo o código sozinho? Poderia incorporar algo desagradável em seu código?
Também: Bard vs. ChatGPT: Bard pode ajudá-lo a programar?
E a situação em que uma IA incrivelmente capaz tem acesso a quase todo o código do mundo nos repositórios do Github? O que poderia esconder em todo esse código? Que mal nefasto essa IA pode causar à infraestrutura mundial se puder acessar todo o nosso código?
Vamos jogar um jogo de pensamento simples. E se a IA recebesse a primeira regra de Asimov como uma instrução chave. Isso é um “robô não deve ferir um ser humano, ou por omissão permitir que um ser humano sofra algum mal”. Não poderia decidir que toda a nossa infraestrutura estava nos causando danos? Ao ter acesso a todo o nosso código, ele poderia simplesmente decidir nos salvar de nós mesmos, inserindo portas traseiras que lhe permitissem, digamos, desligar a rede elétrica, planos de aterramento e engarrafamentos nas rodovias.
Estou plenamente ciente de que o cenário acima é hiperbólico e alarmista. Mas também é possível. Afinal, enquanto os programadores olham seu código no Github, não é possível para ninguém olhar todas as linhas em todo o seu código.
Também: Como usar o ChatGPT para escrever fórmulas do Excel
Quanto a mim, vou tentar não pensar muito nisso. Não quero passar o resto da década de 2020 na posição fetal balançando para frente e para trás no chão. Em vez disso, usarei o ChatGPT para ocasionalmente me ajudar a escrever e depurar pequenas rotinas, manter minha cabeça baixa e esperar que futuras IAs não nos matem em seu esforço para “não permitir que um humano se machuque”.
Você acha o fato de que o ChatGPT pode depurar útil ou aterrorizante? Você acha que as IAs vão nos matar durante o sono, ou você acha que estaremos assistindo nossa destruição com os olhos bem abertos? Ou você, como eu, vai tentar não pensar muito nisso porque te dá dor de cabeça? Fale comigo nos comentários abaixo. Enquanto você ainda pode.
Você pode acompanhar minhas atualizações diárias do projeto nas redes sociais. Certifique-se de me seguir no Twitter em @DavidGewirtzno Facebook em Facebook.com/DavidGewirtz, no Instagram em Instagram.com/DavidGewirtz e no YouTube em YouTube.com/DavidGewirtzTV.
.







