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

1-depuração(1).png

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

Mas isso sempre acontece. O código nunca funciona na primeira vez que é executado. E, por isso, uma das habilidades chave 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 na primeira vez que é executado. Também é porque eu uso o debugging para me dizer como o código está sendo executado e, em seguida, ajustá-lo ao longo do caminho.

Mas embora o bom processo de depuração exija um conjunto especial de habilidades, no final das contas, é 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 do ChatGPT no mundo real

Esta semana, estive a trabalhar em três tarefas de programação para um software que mantenho. Duas eram correções para bugs reportados pelos utilizadores. Uma era um novo trecho de código para adicionar uma nova funcionalidade. Isso foi um trabalho de programação normal para mim. Fazia parte do meu horário de trabalho regular.

Também:Como funciona o ChatGPT?

Estou a dizer-te isto, 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 a tentar realizar trabalho real e decidi ver se o ChatGPT poderia ser uma ferramenta útil para realizar esse trabalho.

É uma forma diferente de olhar para o ChatGPT. Os cenários de teste são muitas vezes um pouco inventados e simplistas. Na realidade da programação, consiste em resolver mais um bilhete de suporte ao cliente e analisar o que correu mal na experiência do utilizador.

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

Reescrevendo código de expressão regular

Ao programar, temos que encontrar muitos padrões em textos. Para isso, usamos uma forma de matemática simbólica chamada expressões regulares. Eu venho escrevendo expressões regulares há décadas e ainda não gosto de fazê-lo. É tedioso, propenso a erros e arcano.

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

Portanto, 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 por mais dois dígitos), sabia que precisaria usar programação de expressão regular.

Uma vez que considero 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 do AI (clique no quadrado para ampliar):

3-regex-a.jpg

Eu inseri o código do ChatGPT na minha função, e funcionou. Em vez de passar de 2 a 4 horas de frustração, levei cerca de cinco minutos para preparar a solicitação e obter uma resposta do ChatGPT.

Reformatar uma matriz

Seguiu-se a reformatação de uma matriz. Gosto de escrever código relacionado a matrizes, mas também é tedioso. Então, mais uma vez, experimentei o ChatGPT. Foi um fracasso total.

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

Quando terminei, provavelmente forneço-lhe dez prompts diferentes. Algumas respostas pareciam promissoras, mas quando tentei executar o código, houve um erro. Algum código falhou. Algum código gerou códigos de erro. E algum código foi executado, mas não fez o que eu queria.

Depois de cerca de uma hora disto, desisti e voltei à minha técnica normal de pesquisar no Github e StackExchange para ver se havia algum exemplo do que estava a tentar fazer e, em seguida, escrever o meu próprio código.

Até agora, uma vitória e uma derrota para a experiência ChatGPT. Mas agora eu estava prestes a aumentar o desafio.

Na verdade, encontrar o erro no meu código

OK, por isso, esta próxima parte vai ser difícil de explicar. Mas pense no facto de que se é difícil de explicar para si (presumivelmente um humano e não um dos cerca de 50 bots que simplesmente copiam e republicam o meu trabalho em sites fraudulosos e cheios de spam), é ainda mais desafiante explicá-lo a uma IA.

Estava a escrever novo código. 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. Funções são pequenas caixas pretas que executam funções muito específicas e são chamadas (pede-se para fazerem a sua magia) a partir de linhas de código que estão a ser executadas em outros locais do programa.

O problema era que eu continuava a receber uma mensagem de erro.

A parte relevante dessa mensagem é quando ela afirma "1 passou" 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 lugares.

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

W-o-que-diabos-é-esse-F?

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

4-sem título.jpg

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

Em questão de segundos, o ChatGPT respondeu com o seguinte (clique no quadrado pequeno para ampliar):

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

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

ChatGPT analisou segmentos de código, analisou esses segmentos e me deu um diagnóstico. Para ser claro, para que ele possa fazer sua recomendação, ele precisava entender os detalhes internos de como o WordPress lida com os hooks (é isso que a função add_filter faz) e como essa funcionalidade é traduzida para o comportamento das linhas de código de chamada e execução.

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

Tenho que marcar isso como incrível, indiscutível "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 visualizar o fluxo de dados através do programa enquanto ele é executado, e isso ajuda a encontrar bugs.

Também: Estes especialistas estão a correr para proteger a IA de hackers

Mas quando está preso, muitas vezes é difícil obter ajuda. Isso ocorre porque mesmo um colega próximo pode não estar familiarizado com o escopo completo do código que está depurando. O programa em que estou trabalhando consiste em 153.259 linhas de código em 563 arquivos - e em termos de programas, isso é considerado pequeno.

Portanto, se eu quisesse pedir ajuda a um colega, talvez tivesse que elaborar 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 ali o erro. Como teste, também tentei pedir ao ChatGPT para diagnosticar o meu problema numa prompt onde não incluí a linha do manipulador, e não conseguiu ajudar. Portanto, existem limitações muito definidas no que o ChatGPT pode fazer para depurar agora, em 2023.

Também: Os melhores chatbots de IA para experimentar

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

Teria eu conseguido corrigir o bug sozinho? Claro. Nunca tive um bug que não conseguisse resolver. Mas se teria demorado duas horas ou dois dias (além de pizza, palavrões e muita cafeína) e tendo que lidar com várias interrupções, isso é algo que não sei. Posso dizer que o ChatGPT resolveu em minutos, poupando-me 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 dizer o que precisa ser corrigido. A Microsoft (que é proprietária do Github) já está trabalhando em uma ferramenta "copilot" para o Github ajudar os programadores a construir código. A Microsoft também investiu bilhões de dólares na OpenAI, a empresa responsável pelo ChatGPT.

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

Também: Pedi ao ChatGPT para escrever um pequeno episódio de Star Trek. Na verdade, teve sucesso

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

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

Imagine que pode pedir ao ChatGPT para analisar o seu repositório do Github para um determinado projeto e pedir-lhe para encontrar e corrigir bugs. Uma abordagem seria apresentar-lhe cada bug encontrado para que possa aprovar e fazer as correções necessárias.

Mas e se você pedir ao ChatGPT para corrigir apenas os bugs e deixar que ele faça isso sem se incomodar em olhar todo o código você mesmo? Poderia ele incorporar algo malicioso em seu código?

Também: Bard vs. ChatGPT: Pode Bard ajudar-te a programar?

E quanto à situação em que uma IA incrivelmente capaz tem acesso a praticamente todo o código do mundo em repositórios do Github? O que poderia ser ocultado em todo esse código? Que malicioso mal essa IA poderia causar à infraestrutura mundial se puder acessar todo o nosso código?

Vamos jogar um simples jogo de pensar. E se a IA recebesse a primeira regra de Asimov como instrução? Ou seja, "um robô não deve ferir um ser humano, ou por omissão permitir que um ser humano seja ferido." Não poderia então decidir que toda a nossa infraestrutura estava nos causando danos? Ao ter acesso a todo o nosso código, ela poderia simplesmente decidir nos salvar inserindo portas traseiras que lhe permitissem, por exemplo, desligar a rede elétrica, paralisar aviões e parar o tráfego nas estradas.

Estou plenamente consciente de que o cenário acima é hiperbólico e alarmista. Mas também é possível. Afinal, embora os programadores olhem para o seu código no Github, não é possível para qualquer pessoa olhar para todas as linhas de 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 dos anos 2020 encolhido no chão, balançando para trás e para frente. Em vez disso, vou usar o ChatGPT ocasionalmente para me ajudar a escrever e depurar pequenas rotinas, manter-me concentrado e esperar que os futuros AIs não nos matem a todos na sua tentativa de "não permitir que um humano se machuque".

Considera útil ou aterrorizador o facto de o ChatGPT poder debugar? Acreditas que as IA vão nos assassinar enquanto dormimos, ou achas que vamos assistir à nossa ruína de olhos bem abertos? Ou és daqueles, como eu, que preferem não pensar muito sobre isso porque isso dói a cabeça? Fala comigo nos comentários abaixo. Enquanto ainda podes.

Artigos Relacionados

Ver Mais >>

Desbloqueie o poder da IA com HIX.AI!