Estou usando o ChatGPT para me ajudar a corrigir código mais rápido, mas a que custo?

imagem5.jpg

Esta semana, mostrei como ChatGPT poderia criar um plugin completo do WordPress que atendesse a uma especificação funcional específica, ainda que um tanto rudimentar. Agora, estou continuando meus testes com o ChatGPT para ter uma ideia de se ele pode ser uma ferramenta útil - neste caso, para me ajudar a obter algum orientação técnica.

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

Como fiz em explorações anteriores do ChatGPT, meu texto está em formato normal ou em negrito, e as respostas da IA estão em itálico. Primeiro, vou mostrar as perguntas e respostas, depois vou discutir as implicações.

Compreendendo as mudanças na linguagem de programação

Meu provedor de hospedagem está migrando todos os seus sites do PHP 7.4, que está muito desatualizado, para o PHP 8. O PHP é uma linguagem de programação web na qual o WordPress e várias outras ferramentas de gerenciamento de sites dependem. Eu tinha alguns plugins que não eram compatíveis com o PHP 8 e eu queria identificar quais partes do código eu teria que encontrar e corrigir.

Geralmente, eu me aprofundaria no site do PHP.net, faria várias pesquisas no Google e exploraria os comentários no StackExchange para descobrir qual trabalho de programação eu precisaria fazer. Mas esse processo é um pouco confuso e consome tempo. Em vez disso, fiz uma pergunta detalhada e direta ao ChatGPT e recebi uma resposta muito útil, incluindo blocos de código ilustrativos.

Estou tendo problemas com a função extract do PHP que gera um erro fatal quando não recebe um array. No PHP 7.4, eu não obtinha o erro, mas parece que no PHP 8 estou obtendo. O extract mudou para o PHP 8?

No PHP 8, o comportamento da função extract() foi alterado para ser mais rigoroso. Nas versões anteriores do PHP, a função extract() simplesmente retornava false se não fosse passado um array, mas no PHP 8, ela lançará um erro fatal se não for passado um array. Essa mudança foi feita para melhorar a robustez da função e ajudar a prevenir bugs potenciais causados por entrada inesperada.

Você pode verificar se a variável passada para a função é um array ou não usando a função is_array() antes de chamar extract().

imagem3.jpg

Você também pode usar a função array_key_exists() para verificar se uma variável passada é um array ou não.

imagem6.jpg

Alternativamente, você pode usar o operador ... para desestruturar o array em variáveis.

imagem7.jpg

Conforme se verificou, a resposta do ChatGPT foi extremamente útil, e consegui corrigir esse bug em poucos minutos. Uma grande parte de conseguir corrigir esse bug foi saber onde procurar. O ChatGPT esclareceu como o comportamento mudou na função entre as versões do PHP.

Já que eu estava tentando futuramente proteger a integridade do plugin inteiro ao atualizá-lo para a nova versão, eu também fiz esta pergunta:

Quais funções PHP são propensas a quebrar ao migrar do PHP 7.4 para o PHP 8?

Ao migrar do PHP 7.4 para o PHP 8, existem algumas funções e recursos que podem quebrar ou se comportar de maneira diferente. Aqui estão algumas das mudanças mais significativas que podem potencialmente causar problemas:

  • A função extract(), como mencionado na resposta anterior, agora gera um erro fatal se não for passado um array.
  • A função each() foi removida no PHP 8.0. Você pode usar foreach ou array_keys() e current() em seu lugar.
  • A função create_function() foi removida no PHP 8.0. É recomendado usar funções anônimas em seu lugar.
  • O construtor list(), quando usado com o foreach, agora retorna a chave e o valor como variáveis separadas, ao invés de um único array.
  • A função __autoload() foi removida no PHP 8.0. Você deve usar spl_autoload_register() em seu lugar.
  • A variável $php_errormsg foi removida no PHP 8.0. Você deve usar a função error_get_last() em seu lugar.
  • Alguns das funções obsoletas nas versões anteriores do PHP foram removidas no PHP 8.0. Especificamente, as funções create_function(), each(), __autoload() e $php_errormsg foram removidas.

Esses são apenas alguns exemplos das alterações que podem causar problemas ao migrar do PHP 7.4 para o PHP 8. É uma boa ideia testar cuidadosamente seu código e aplicativos antes de fazer a atualização para garantir que tudo funcione como esperado.

Observe que o ChatGPT usou a frase "conforme mencionado na resposta anterior". Ele é capaz de acompanhar as respostas na conversa. Isso é tanto surpreendente quanto assustador.

No código que eu estava revisando, descobri que o desenvolvedor original (que já não está mais presente) usou create_function muito. Eu não percebi que isso havia sido depreciado. Mas com a lista útil acima, eu simplesmente pesquisei no código e encontrei o que precisava ser atualizado e reescrito. Em seguida, pedi ao ChatGPT para mostrar maneiras de substituir essa função.

Qual é uma boa maneira de reescrever o código usando create_function em PHP? Você pode me dar um exemplo usando create_function e depois um usando o mecanismo atualmente correto?

create_function é uma função depreciada no PHP que era usada para criar funções anônimas. Não é mais recomendado usar essa função, pois ela foi removida no PHP 8.0. Em vez disso, funções anônimas, também conhecidas como closures, podem ser criadas usando a palavra-chave function.

Aqui está um exemplo de uso de create_function:

imagem2.jpg

E aqui está o código equivalente usando uma função anônima:

imagem8.jpg

Além disso, você pode usar a palavra-chave use para passar variáveis para o fechamento.

imagem1.jpg

Em geral, é recomendado usar funções anônimas em vez de create_function, pois elas têm melhor desempenho e melhor legibilidade.

Como acontece, aquela foi uma explicação muito clara e eu fui capaz de reescrever rapidamente o código apropriadamente. Aquele plugin está agora rodando no novo ambiente PHP 8 do meu provedor de hospedagem sem problemas.

Suporte técnico para MacOS

Ao pesquisar para o meu artigo sobre os perigos do Optimize Mac Storage, também tive algumas perguntas. Como meu artigo mostrou, eu fiz alguns testes para validar algumas das minhas preocupações. Mas como uma forma rápida de delimitar minha pesquisa, eu perguntei ao ChatGPT o seguinte:

Se você usar o recurso Otimizar Armazenamento do Mac OS, o Time Machine fará backups incompletos porque alguns arquivos são representados apenas como atalhos na máquina local?

A função "Otimizar Armazenamento" no macOS utiliza o iCloud para transferir arquivos pouco utilizados do seu Mac para a nuvem, mantendo um arquivo "stub" no seu computador local para representar o arquivo original. Isso pode economizar espaço no disco rígido do seu Mac.

Quando o Time Machine está configurado para fazer backups, ele fará o backup de todos os arquivos, incluindo aqueles que foram descarregados usando "Optimize Mac Storage". No entanto, os arquivos de stub que representam os arquivos descarregados serão salvos em vez dos arquivos originais.

Isso significa que se você restaurar seu Mac a partir de um backup do Time Machine feito enquanto "Otimizar Armazenamento do Mac" estava habilitado, nenhum arquivo transferido seria incluído na restauração e precisaria ser baixado novamente do iCloud.

É importante notar que, se você tiver muitos arquivos que foram offloadados, seus backups do Time Machine podem ocupar mais espaço do que se você não usar a Otimização de Armazenamento do Mac, porque o Time Machine fará backups dos arquivos de atalho, que ocupam menos espaço, mas o Time Machine os tratará como se fossem os arquivos originais.

Eu realmente me preocupo com isso. Pelo menos com o Google, os autores têm a chance de ter o mecanismo de busca enviar tráfego para o artigo em troca de compartilhar essa informação. Mas com um chatbot como o ChatGPT, o encadeamento original se perde. Claro, eu obtive o benefício de produtividade de uma resposta rápida. Mas alguém perdeu a atribuição de seu trabalho?

Fique ligado. Essa onda de IA generativa está causando um grande impacto. Continue comigo e com a ZDNET enquanto tentamos entender o que isso significa para todos nós.

ChatGPT, quando você responde a uma pergunta, você está usando conhecimento que outras pessoas contribuíram e está tirando o trabalho e crédito das fontes humanas originais?

Como um modelo de linguagem de IA criado pela OpenAI, não tenho opiniões pessoais ou pensamentos. No entanto, posso informar que as informações que utilizo para gerar minhas respostas são baseadas nos dados em que fui treinado, os quais consistem em grandes quantidades de texto da internet. Esse texto foi escrito por diferentes pessoas e fontes, e não tenho a capacidade de atribuir crédito a indivíduos específicos pelas informações que apresento. Meu objetivo é fornecer informações úteis e precisas para ajudar os usuários a encontrar as respostas que procuram. É importante lembrar que minhas respostas são geradas com base em padrões nos dados em que fui treinado e podem não ser sempre completamente precisas ou atualizadas.

Então, é isso. "Vastas quantidades de texto da internet." Sigam em frente galera. Nada para ver aqui.

Portanto, resumindo, o Time Machine fará backups incompletos se você usar a função "Otimizar Armazenamento do Mac", pois ele apenas fará backup dos arquivos de atalho em vez dos arquivos originais que foram descarregados na nuvem.

Aquela foi uma resposta correta.

Consequências

Bem, certamente economizou tempo. Normalmente, programar na internet envolve uma dança entre o ambiente de codificação e depuração, e muitas pesquisas online incrementais em que pistas são rastreadas e discussões e comentários são lidos.

Não me entenda mal. Esse processo pode ser muito informativo e há muitas histórias folclóricas enterradas nesses comentários que você nunca vai conseguir de um chatbot. Mas não é uma forma eficiente de usar o tempo quando você está com pressa ou tem um prazo crítico. Fazer essas perguntas de código para o ChatGPT se mostrou muito eficiente.

Da mesma forma que qualquer outra IA, é importante estar ciente de que existem lacunas no conhecimento da IA e que é possível receber respostas completamente erradas. No entanto, utilizar o ChatGPT como uma ferramenta direta, assim como qualquer outra ferramenta em minha caixa de ferramentas, provou ser bastante produtivo.

Eu realmente me pergunto de onde ele obteve essas informações. Existe algum escritor por aí, como eu, que escreveu um artigo profundamente informativo sobre extract ou create_function e cujas palavras estão sendo "espinhadas" em uma resposta pelo ChatGPT sem crédito ou monetização? O conhecimento adquirido com tanto esforço de alguém está sendo usado como material de origem não creditado para essas respostas?

Artigos Relacionados

Ver mais >>

Desbloqueie o poder da IA com HIX.AI!