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

imagem5.jpg

Earlier this week, I showed you how ChatGPT could create an entire WordPress plugin that met a specific, if somewhat rudimentary, functional spec. Now, I'm continuing my testing of ChatGPT to get a feel for whether it can be a helpful tool -- in this case, to help me get some technical guidance.

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

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

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

O meu fornecedor de alojamento está a mover 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 gestão de sites dependem. Eu tinha alguns plugins que não eram compatíveis com o PHP 8, e eu queria identificar em que partes do código teria de procurar e corrigir.

Normalmente, eu iria pesquisar o site PHP.net, fazer várias pesquisas no Google e explorar os comentários no StackExchange para descobrir o trabalho de programação que precisaria fazer. Mas isso é um processo um pouco confuso e demorado. 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 está gerando um erro fatal quando não é passado um array. No PHP 7.4, eu não recebia esse erro, mas parece que no PHP 8 eu recebo. A função extract mudou no 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 falso 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 evitar possíveis bugs causados por entrada inesperada.

Pode verificar se a variável passada para a função é uma matriz ou não usando a função is_array() antes de chamar extract().

imagem3.jpg

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

imagem6.jpg

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

imagem7.jpg

Como acabou por se verificar, a resposta do ChatGPT foi extremamente útil, e consegui corrigir aquele bug em poucos minutos. Um grande parte de conseguir corrigir aquele bug foi saber onde procurar. O ChatGPT explicou como o comportamento mudou na função entre as versões do PHP.

Uma vez que eu estava tentando tornar o plugin completo à prova de futuro ao mudar para a nova versão, também fiz esta pergunta:

Quais funções PHP têm maior probabilidade de quebrar ao migrar do PHP 7.4 para o PHP 8?

Ao mover de PHP 7.4 para PHP 8, há algumas funções e recursos que podem quebrar ou se comportar de forma diferente. Aqui estão algumas das mudanças mais notáveis ​​que podem potencialmente causar problemas:

  • A função extract(), como mencionada 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 vez disso.
  • A função create_function() foi removida no PHP 8.0. É recomendado utilizar funções anônimas em seu lugar.
  • O construtor list(), quando usado com foreach, agora retorna a chave e o valor como variáveis separadas, em vez 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.
  • Algumas das depreciações em versões anteriores do PHP foram removidas no PHP 8.0. Especificamente, as funções create_function(), each(), __autoload() e a variável $php_errormsg foram removidas.

Estes são apenas alguns exemplos das alterações que podem causar problemas ao passar do PHP 7.4 para o PHP 8. É uma boa ideia testar minuciosamente o seu código e suas aplicações antes de fazer a atualização para garantir que tudo funcione conforme o esperado.

Tenha em consideração que o ChatGPT usou a expressão "como mencionado na resposta anterior". Ele é capaz de acompanhar as respostas na conversa. Isso é tanto impressionante quanto assustador.

No código que estava a rever, descobri que o programador original (que já não está no quadro) usou bastante create_function. Não me tinha apercebido de que isso tinha sido descontinuado. Mas com a útil lista acima, pesquisei apenas o código e descobri o que precisava de ser atualizado e reescrito. Depois, pedi ao ChatGPT que me mostrasse maneiras de substituir essa função.

Qual é uma boa forma de reescrever o código usando create_function em PHP? Pode me dar um exemplo usando create_function e outro usando o mecanismo atualmente apropriado?

create_function é uma função obsoleta em PHP que era utilizada para criar funções anônimas. Não é mais recomendado utilizar esta 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 como usar 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 closure.

imagem1.jpg

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

Acontece que essa foi uma explicação muito clara e eu consegui rapidamente reescrever o código corretamente. Esse plugin está agora funcionando no novo ambiente PHP 8 do meu provedor de hospedagem sem problemas.

Suporte técnico para MacOS

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

Se você usar o recurso de Otimização de Armazenamento do MacOS, o Time Machine fará backups incompletos porque alguns arquivos são apenas representados como stubs na máquina local?

O recurso "Otimizar o Armazenamento do Mac" no macOS utiliza o iCloud para descarregar arquivos raramente usados do seu Mac para a nuvem, mantendo um arquivo "stub" em sua máquina local para representar o arquivo original. Isso pode economizar espaço no disco rígido do seu Mac.

Quando o Time Machine é configurado para fazer backups, ele fará backups de todos os arquivos, incluindo aqueles que foram descarregados usando "Otimizar Armazenamento do Mac". No entanto, os arquivos de marcador que representam os arquivos descarregados serão copiados no lugar dos arquivos originais.

Isso significa que se você restaurar seu Mac a partir de um backup do Time Machine que foi feito enquanto "Otimizar Armazenamento do Mac" estava ativado, quaisquer arquivos ausentes não serão incluídos na restauração e precisarão ser baixados novamente do iCloud.

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

Preocupo-me 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 thread original é perdido. Claro, obtive o benefício de produtividade de uma resposta rápida. Mas alguém perdeu a atribuição pelo seu trabalho?

Fique atento. Esta onda de inteligência artificial generativa está a causar um grande impacto. Mantenha-se comigo e com a ZDNET enquanto tentamos perceber o que isso significa para todos nós.

ChatGPT, quando respondes a uma pergunta, estás a utilizar conhecimento contribuído por outras pessoas e estás a retirar o trabalho e o mérito das fontes humanas originais?

Como modelo de linguagem de IA criado pela OpenAI, não tenho opiniões ou pensamentos pessoais. No entanto, posso dizer-lhe que a informação que utilizo para gerar as minhas respostas é baseada nos dados com que fui treinado, que consistem numa vasta quantidade de texto da internet. Este texto foi escrito por diferentes pessoas e fontes, e não tenho a capacidade de atribuir crédito a indivíduos específicos pela informação que apresento. O meu objetivo é fornecer informações úteis e precisas para ajudar os utilizadores a encontrar as respostas que procuram. É importante lembrar que as minhas respostas são geradas com base em padrões nos dados em que fui treinado e podem nem sempre ser totalmente precisas ou atualizadas.

Então é isso. "Vastos montantes de texto da internet." Sigam em frente, pessoal. Nada para ver aqui.

Então, em resumo, o Time Machine fará backups incompletos se você usar o recurso "Otimizar Armazenamento do Mac", pois ele apenas fará backup dos arquivos de referência em vez dos arquivos originais que foram transferidos para a nuvem.

Essa foi uma resposta correta.

Implicações

Bem, certamente poupou tempo. Normalmente, programar na internet envolve uma dança entre o ambiente de codificação e depuração, e muitas pesquisas progressivas na web onde pistas são seguidas e discussões e comentários são lidos.

Não me entenda mal. Esse processo pode ser muito informativo e há muitas lendas enterradas nesses comentários que você nunca obteria de um chatbot. Mas não é uma utilização eficiente do tempo quando você está com pressa ou em uma data limite crítica. Fazer essas perguntas de programação ao ChatGPT provou ser muito eficiente.

Tal como acontece com qualquer coisa de IA, deve-se estar ciente de que existem lacunas no conhecimento da IA e que é possível obter respostas completamente erradas. Mas usar o ChatGPT como uma ferramenta direta, assim como qualquer outra ferramenta na minha caixa de ferramentas, provou ser bastante produtivo.

Eu fico curioso sobre onde ele obteve suas informações, porém. Existe algum escritor por aí como eu, que escreveu um artigo profundamente informativo sobre extract ou create_function cujas palavras estão sendo "espremidas" em uma resposta do ChatGPT sem crédito ou monetização? O conhecimento conquistado 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!