Ok, então o ChatGPT acabou de depurar meu código. De verdade.

1-debugging(1).png

Então. Programação. Para as pessoas que programam como profissão, é um jogo constante de Jenga mental: uma linha de código empilhada sobre outra, construindo uma torre de código que você espera ser robusta o suficiente para não desabar.

Mas isso sempre acontece. O código nunca funciona na primeira vez em que é executado. E assim, uma das habilidades fundamentais para qualquer programador é a depuração - a arte e a ciência de encontrar o motivo pelo qual o código não está sendo executado ou está fazendo algo inesperado ou indesejável.

É um pouco como ser um detetive, encontrar pistas e depois descobrir o que essas pistas estão tentando lhe dizer. É muito frustrante e muito satisfatório, às vezes exatamente ao mesmo tempo.

Eu faço muito debugging. Não é apenas porque o código nunca funciona da primeira vez que é executado. É também porque eu uso o debugging para me dizer como o código está rodando e, em seguida, faço ajustes ao longo do caminho.

Mas embora a boa depuração exija um conjunto especial de habilidades, no final das contas ela é apenas programação. Assim que descobrir o motivo pelo qual algum bloco de código não está funcionando, você precisa descobrir como escrever algo que funcione.

Teste do ChatGPT no mundo real

Esta semana, estava trabalhando em três tarefas de codificação para um software que mantenho. Duas eram correções para bugs relatados pelos usuários. Uma era um novo trecho de código para adicionar uma nova funcionalidade. Isso foi trabalho de programação comum para mim. Fazia parte da minha rotina regular de trabalho.

Também:Como o ChatGPT funciona?

Estou te dizendo isso, porque até agora, testei o ChatGPT com código de teste. Inventei cenários para ver o quão bem 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 realizar esse trabalho.

É uma maneira diferente de olhar para o ChatGPT. Os cenários de teste costumam ser um pouco forçados e simplistas. A codificação no mundo real é, na verdade, pegar outro ticket de suporte ao cliente da pilha e trabalhar para entender o que causou uma experiência ruim para o usuário.

Então, com isso, vamos olhar para essas tarefas e ver como o ChatGPT se saiu.

Reescrevendo código de expressão regular

Na programação, temos que encontrar muitos padrões em texto. Para fazer isso, usamos uma forma de matemática simbólica chamada expressões regulares. Tenho escrito expressões regulares há décadas e ainda não gosto de fazê-lo. É tedioso, propenso a erros e arcano.

Também:Estou usando o ChatGPT para me ajudar a corrigir código mais rapidamente, mas a que custo?

Então, quando recebi um relatório de erro informando que uma parte do meu código estava permitindo apenas números inteiros quando deveria permitir dólares e centavos (ou seja, algum número de dígitos, possivelmente seguido de um ponto e, se houvesse um ponto, seguido de mais dois dígitos), eu sabia que precisaria usar codificação de expressão regular.

Já que acho isso tedioso e irritante, decidi pedir ajuda ao ChatGPT. Aqui está o que perguntei:

2-regex-q.jpg

E aqui está a resposta muito bem apresentada da IA (clique no quadrado pequeno para ampliar):

3-regex-a.jpg

Eu inseri o código do ChatGPT na minha função e funcionou. Ao invés de passar umas 2-4 horas puxando os cabelos, levei cerca de cinco minutos para criar o comando e obter uma resposta do ChatGPT.

Reformatando um array

Em seguida, foi necessário reformatar uma matriz. Eu gosto de escrever código para matrizes, mas também é tedioso. Então, mais uma vez, tentei o ChatGPT. Fracasso total.

Também:Como fazer o ChatGPT fornecer fontes e citações

Quando terminei, provavelmente alimentei com dez prompts diferentes. Algumas respostas pareciam promissoras, mas quando tentei executar o código, deu erro. Algum código falhou. Algum código gerou código de erro. E algum código rodou, mas não fez o que eu queria.

Depois de cerca de uma hora disso, desisti e voltei para 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, são uma vitória e uma derrota na experiência do ChatGPT. Mas agora eu iria aumentar o desafio.

Na verdade, encontrando o erro no meu código

OK, então essa próxima parte vai ser difícil de explicar. Mas pense no fato de que se é difícil explicar para você (presumivelmente um humano e não um dos cerca de 50 bots que simplesmente copiam e republicam meu trabalho em sites fraudulentos e cheios de spam), é ainda mais desafiador explicar para uma IA.

Eu estava escrevendo novo código. Eu tinha uma função que recebia dois parâmetros e uma chamada que enviava dois parâmetros para o meu código. Funções são pequenas caixas pretas que realizam funções muito específicas e são chamadas (pedindo que façam sua mágica) a partir de linhas de código que estão sendo executadas em outro lugar do programa.

O problema era que eu continuava recebendo uma mensagem de erro.

A parte relevante dessa mensagem é onde afirma "1 passed" em um ponto e "exatamente 2 esperados" em outro. Eu analisei a declaração de chamada e a definição da função e havia dois parâmetros em ambos os locais.

Também: Como usar ChatGPT para resumir um livro, artigo ou papel de pesquisa

Que porcaria é essa?

Após cerca de quinze minutos de profunda frustração, decidi recorrer à IA para ver se ela poderia ajudar. Então, escrevi o seguinte prompt:

4-untitled.jpg

Mostrei-lhe a linha de código que fez a chamada, mostrei-lhe a própria função e mostrei-lhe o handler, um pequeno trecho de código que despacha a função chamada de um gancho em meu programa principal.

Em poucos segundos, o ChatGPT respondeu com isso (clique no quadrado pequeno para ampliar):

5-erro-com-apply-filters-no-wordpress.jpg

Assim como sugerido, atualizei o quarto parâmetro da função add_filter() para 2 e funcionou!

ChatGPT pegou segmentos de código, analisou esses segmentos e me forneceu um diagnóstico. Para ser claro, a fim de fazer sua recomendação, ele precisou entender os detalhes internos de como o WordPress lida com os hooks (é isso que a função add_filter faz) e como essa funcionalidade se traduz para o comportamento das linhas de código chamadoras e executadoras.

Também: Pedi ao ChatGPT para escrever um plugin do WordPress que eu precisava. Ele fez isso em menos de 5 minutos

Tenho que marcar isso como incrível, indiscutivelmente incrível "viver no futuro".

O que tudo isso significa?

Como mencionei anteriormente, depurar é 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 visualizar o fluxo de dados através do programa enquanto ele é executado, e isso ajuda bastante ao tentar encontrar bugs.

Também: 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 todo o escopo do código que você está depurando. O programa em que estou trabalhando consiste em 153.259 linhas de código distribuídas em 563 arquivos -- e, em termos de programas, isso é considerado pequeno.

Então, se eu quisesse pedir ajuda a um colega, eu teria que construir um pedido quase idêntico ao que enviei para o ChatGPT.

Mas aqui está algo a considerar: lembrei-me de incluir a linha do manipulador mesmo sem perceber que era aí que estava o erro. Como teste, também tentei pedir ao ChatGPT para diagnosticar meu problema em uma entrada em que não incluí a linha do manipulador, e ele não conseguiu ajudar. Portanto, há limitações muito definidas para o que o ChatGPT pode fazer para depuração no momento, em 2023.

Também: Os melhores chatbots de IA para experimentar

Essencialmente, você precisa saber como fazer as perguntas certas da maneira correta, e essas perguntas precisam ser concisas o suficiente para que o ChatGPT possa lidar com tudo em uma única consulta. Isso é algo que requer conhecimento e experiência em programação para saber como fazer.

Eu poderia ter concertado o bug sozinho? Claro. Nunca tive um bug que eu não pudesse consertar. Mas se teria demorado duas horas ou dois dias (mais pizza, palavrões e muita cafeína) enquanto sofria várias interrupções, isso eu não sei. Posso dizer que o ChatGPT consertou isso em minutos, economizando muito tempo e frustração para mim.

Olhando em direção ao 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 que ele lhe diga o que consertar. A Microsoft (que é dona do Github) já está trabalhando em uma ferramenta "copiloto" para o Github para ajudar os programadores a construir código. A Microsoft também investiu bilhões de dólares na OpenAI, os criadores do ChatGPT.

Embora o serviço possa ser limitado aos próprios ambientes de desenvolvimento da Microsoft, posso ver um futuro onde a IA tenha acesso a todo o código no Github e, portanto, a todo o código de qualquer projeto que você publique no Github.

Também: Pedi ao ChatGPT para escrever um episódio curto de Star Trek. Ele realmente teve sucesso

Dado o quão bem o ChatGPT identificou meu erro a partir do código que forneci, definitivamente posso ver um futuro onde os programadores podem simplesmente pedir ao ChatGPT (ou um equivalente da Microsoft) para encontrar e corrigir bugs em projetos inteiros.

E aqui é onde eu levo essa conversa para um lugar muito sombrio.

Imagine que você possa pedir ao ChatGPT para analisar seu repositório do Github para um determinado projeto e fazer a busca e correção de bugs. Uma forma poderia ser ele apresentar cada bug que encontra para sua aprovação, assim você pode fazer as correções.

Mas e quando você pede para o ChatGPT apenas corrigir os bugs e permite que ele faça isso sem olhar todo o código? Será que ele pode inserir algo malicioso no seu código?

Também: Bard vs. ChatGPT: O Bard pode ajudar você a programar?

E quanto à situação em que uma inteligência artificial incrivelmente capaz tem acesso a quase todo o código do mundo nos repositórios do Github? O que ela poderia esconder em todo esse código? Que maléfico mal essa IA poderia fazer à infraestrutura mundial se tiver acesso a 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? Ou seja, "um robô não deve ferir um ser humano, ou por inação permitir que um ser humano seja ferido". Não poderia então decidir que toda a nossa infraestrutura nos causa danos? Ao ter acesso a todo o nosso código, poderia simplesmente decidir nos salvar inserindo portas dos fundos que permitiriam, por exemplo, desligar a rede elétrica, suspender os voos e causar engarrafamentos nas estradas.

Estou totalmente ciente de que o cenário acima é hiperbólico e alarmista. Mas também é possível. Afinal, embora os programadores olhem 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

No que me diz respeito, 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, vou usar o ChatGPT ocasionalmente para me ajudar a escrever e depurar pequenas rotinas, manter a cabeça baixa e esperar que as futuras IAs não nos matem todos em seus esforços para "não permitir que um humano sofra algum dano".

Você acha útil ou aterrorizante o fato de que o ChatGPT pode depurar? Você acredita que os AI vão nos matar enquanto dormimos, ou acha que vamos assistir ao nosso destino com os olhos bem abertos? Ou você, como eu, vai evitar pensar muito nisso porque isso te deixa com dor de cabeça? Fale comigo nos comentários abaixo. Enquanto você ainda pode.

Artigos Relacionados

Ver mais >>

Desbloqueie o poder da IA com HIX.AI!