Jeg bruker ChatGPT for å hjelpe meg med å fikse koden raskere, men til hvilken kostnad?

bilde5.jpg

Tidligere denne uken viste jeg deg hvordan ChatGPT kunne lage en komplett WordPress-plugin som oppfylte et spesifikt, om enn noe grunnleggende, funksjonelt krav. Nå fortsetter jeg testingen av ChatGPT for å få en følelse av om det kan være et nyttig verktøy – i dette tilfellet for å hjelpe meg med noen tekniske råd.

Også: Jeg ba ChatGPT om å skrive en WordPress-plugin. Den gjorde det på under 5 minutter

Som jeg har gjort i tidligere utforskninger av ChatGPT, er skrivingen min i vanlig eller fet tekst, og AI-svarene er i kursiv type. Først vil jeg vise deg spørsmålene og svarene, deretter vil jeg diskutere implikasjonene.

Forståelse av endringer i programmeringsspråk

Min webhotell leverandør flytter alle sine nettsteder fra den veldig utdaterte PHP 7.4 til PHP 8. PHP er et webprogrammeringsspråk som WordPress og en rekke andre webadministrasjonsverktøy er avhengige av. Jeg hadde et par utvidelser som ikke var kompatible med PHP 8, og jeg ønsket å identifisere hvilke deler av koden deres jeg måtte finne og fikse.

Vanligvis pleier jeg å grave meg inn i PHP.net-nettstedet, gjøre en haug med Google-søk og lete rundt i kommentarene på StackExchange for å finne ut hvilket programmeringsarbeid jeg må gjøre. Men det er en rotete og tidkrevende prosess. I stedet stilte jeg et detaljert og direkte spørsmål til ChatGPT og fikk tilbake et veldig nyttig svar, inkludert blokker med illustrativ kode.

Jeg har problemer med PHP extract funksjonen som gir en fatal feil når den ikke får en array som parameter. I PHP 7.4 fikk jeg ikke denne feilen, men det virker som om jeg gjør det i PHP 8. Har extract endret seg for PHP 8?

I PHP 8 har atferden til extract()-funksjonen blitt endret for å være mer streng. I tidligere versjoner av PHP ville extract()-funksjonen bare returnere false hvis den ikke ble sendt med en matrise, men i PHP 8 vil den kaste en fatal feil hvis den ikke blir sendt med en matrise. Denne endringen ble gjort for å forbedre funksjonens robusthet og for å bidra til å forhindre potensielle feil forårsaket av uventet inndata.

Du kan sjekke om variabelen som blir sendt til funksjonen er en array eller ikke ved å bruke is_array()-funksjonen før du kaller på extract().

bilde3.jpg

Du kan også bruke array_key_exists() funksjonen for å sjekke om en variabel som er sendt er en array eller ikke.

bilde6.jpg

Alternativt kan du bruke ... operatøren for å destrukturere arrayen til variabler.

bilde7.jpg

Som det viste seg, var ChatGPTs svar ekstremt nyttig, og jeg fikk den feilen fikset på noen få minutter. En stor del av å kunne fikse den feilen var å vite hvor man skulle se. ChatGPT avklarte hvordan oppførselen endret seg i funksjonen mellom versjoner av PHP.

Ettersom jeg prøvde å forberede hele utvidelsen for fremtiden ved å flytte til den nye versjonen, spurte jeg også dette:

Hvilke PHP-funksjoner er sannsynlig å slutte å virke når man går fra PHP 7.4 til PHP 8?

Når man går over fra PHP 7.4 til PHP 8, er det noen funksjoner og egenskaper som kan slutte å virke eller oppføre seg annerledes. Her er noen av de mest merkbare endringene som potensielt kan forårsake problemer:

  • Funksjonen extract(), som nevnt i forrige svar, kaster nå en fatal feil hvis den ikke er gitt en array.
  • Funksjonen each() er fjernet i PHP 8.0. Du kan bruke foreach eller array_keys() og current() i stedet.
  • Funksjonen create_function() er fjernet i PHP 8.0. Det anbefales å bruke anonyme funksjoner i stedet.
  • Konstruksjonen list(), når den brukes med foreach, returnerer nå nøkkelen og verdien som separate variabler, i stedet for en enkelt array.
  • Funksjonen __autoload() er fjernet i PHP 8.0. Du bør bruke spl_autoload_register() i stedet.
  • Variabelen $php_errormsg er fjernet i PHP 8.0. Du bør bruke funksjonen error_get_last() i stedet.
  • Noen av deprekasjonene i tidligere PHP-versjoner er nå fjernet i PHP 8.0. Spesifikt, create_function(), each(), __autoload(), og $php_errormsg er fjernet.

Dette er bare noen eksempler på endringer som kan føre til problemer når man går fra PHP 7.4 til PHP 8. Det er lurt å grundig teste koden og applikasjonene dine før oppgradering for å sikre at alt fungerer som forventet.

Merk at ChatGPT brukte uttrykket "som nevnt i forrige svar." Den er i stand til å holde styr på svar i samtalen. Det er både "wow" og skremmende.

I den koden jeg reviderte, viste det seg at den opprinnelige utvikleren (som for lengst er ute av bildet) brukte create_function mye. Jeg skjønte ikke at den hadde blitt avviklet. Men med den nyttige listen ovenfor, søkte jeg bare gjennom koden og fant det som måtte oppdateres og omskrives. Jeg gikk deretter videre og ba ChatGPT om å vise meg måter å erstatte den funksjonen på.

Hva er en god måte å omskrive kode som bruker create_function i PHP? Kan du gi meg et eksempel med create_function, og deretter et eksempel med den nåværende riktige mekanismen?

create_function er en utdatert funksjon i PHP som ble brukt til å opprette anonyme funksjoner. Det anbefales ikke lenger å bruke denne funksjonen, da den er fjernet i PHP 8.0. I stedet kan anonyme funksjoner, også kjent som closures, opprettes ved hjelp av function-nøkkelordet.

Her er et eksempel på bruk av create_function:

bilde2.jpg

Og her er tilsvarende kode ved bruk av en anonym funksjon:

bilde8.jpg

I tillegg kan du bruke use nøkkelordet for å sende variabler inn i closure.

bilde1.jpg

Generelt sett anbefales det å bruke anonyme funksjoner i stedet for create_function da de har bedre ytelse og lesbarhet.

Det viser seg at det var en veldig tydelig forklaring, og jeg klarte raskt å omskrive koden deretter. Denne tilleggsmodulen kjører nå problemfritt i min nettstedstjener sin nye PHP 8-miljø.

Hjelp til teknisk støtte for MacOS

Da jeg forsket på artikkelen min om farene ved Optimize Mac Storage, hadde jeg også noen spørsmål. Som artikkelen min viste, gjorde jeg noen tester for å validere noen av mine bekymringer. Men som en rask måte å begrense forskningen min på, spurte jeg ChatGPT dette:

Hvis du bruker MacOS-funksjonen Optimaliser lagring på Mac, vil Time Machine lage ufullstendige sikkerhetskopier fordi noen filer bare er representert som stubber på den lokale maskinen?

"Optimize Mac Storage"-funksjonen i macOS bruker iCloud til å avlaste sjelden brukte filer fra Macen din til skyen, samtidig som den beholder en "stub"-fil på den lokale maskinen for å representere den opprinnelige filen. Dette kan spare plass på Macens harddisk.

Når Time Machine er satt opp for å lage sikkerhetskopier, vil den sikkerhetskopiere alle filer, inkludert de som er lastet ned ved hjelp av "Optimaliser Mac-lagring." Imidlertid vil de midlertidige filene som representerer de nedlastede filene bli sikkerhetskopiert i stedet for de opprinnelige filene.

Dette betyr at hvis du skulle gjenopprette Mac-en din fra en Time Machine-sikkerhetskopi som ble laget mens "Optimaliser lagring på Mac" var aktivert, så vil ikke noen utlagte filer bli inkludert i gjenopprettingen og må lastes ned fra iCloud på nytt.

Det er viktig å merke seg at hvis du har mange filer som er avlastet, kan Time Machine-backupene dine ta opp mer plass enn hvis du ikke bruker Optimaliser Mac-lagring fordi Time Machine vil sikkerhetskopiere forstyrrelsesfiler, som tar opp mindre plass, men som Time Machine vil behandle som de opprinnelige filene.

Jeg bekymrer meg for det. Ihvertfall med Google har forfatterne en sjanse til å få søkemotoren til å sende trafikk til artikkelen i bytte for å dele den informasjonen. Men med en chatbot som ChatGPT går den opprinnelige tråden tapt. Selvfølgelig fikk jeg produktivitetsfordelen av et raskt svar. Men mistet noen der ute anerkjennelsen for arbeidet sitt?

Stay tuned. Denne bølgen av generativ kunstig intelligens skaper store bølger. Følg med meg og ZDNET når vi prøver å forstå hva det betyr for oss alle.

ChatGPT, når du svarer på et spørsmål, tar du kunnskap som andre har bidratt med, og tar du arbeid og ære bort fra de opprinnelige menneskelige kildene?

Som en AI-språkmodell opprettet av OpenAI har jeg ingen personlige meninger eller tanker. Imidlertid kan jeg fortelle deg at informasjonen jeg bruker for å generere mine svar er basert på dataene jeg har blitt trent på, som består av store mengder tekst fra internett. Denne teksten ble skrevet av mange forskjellige mennesker og kilder, og jeg har ikke evnen til å tilskrive kreditt til spesifikke enkeltpersoner for informasjonen jeg presenterer. Mitt mål er å gi nyttig og nøyaktig informasjon for å assistere brukere med å finne svarene de leter etter. Det er viktig å huske at mine svar blir generert basert på mønstre i dataene jeg ble trent på, og kan derfor ikke alltid være helt nøyaktige eller oppdaterte.

Så, ja. Det der. "Store mengder tekst fra internett." Gå videre, folkens. Ingenting å se her.

Så kort fortalt, vil Time Machine lage ufullstendige sikkerhetskopier hvis du bruker "Optimaliser Mac-lagring" funksjonen, siden den kun sikkerhetskopierer stubbfilene i stedet for de originale filene som har blitt lastet opp til skyen.

Det var et riktig svar.

Konsekvenser

Vel, det sparte definitivt tid. Normalt innebærer programmering på internett en dans mellom koding- og feilsøkingsmiljøet, samt mange inkrementelle nettsøk der ledetråder spores opp og diskusjoner og kommentarer blir lest.

Ikke misforstå meg. Den prosessen kan være veldig informativ, og det er mye folketro gjemt i de kommentarene du aldri vil få fra en chatbot. Men det er ikke en effektiv bruk av tid når du har det travelt eller har en kritisk frist. Å stille disse kodende spørsmålene til ChatGPT viste seg å være veldig effektivt.

Som med alle AI-systemer må du være klar over at det er hull i AI-systemets kunnskap, og at du meget vel kan få helt feil svar. Men å bruke ChatGPT som et enkelt verktøy, på samme måte som ethvert annet verktøy i verktøykassen min, viste seg å være ganske produktivt.

Jeg lurer imidlertid på hvor den fikk informasjonen sin fra. Er det noen forfatter der ute som meg som skrev en dypt informativ artikkel om extract eller create_function, hvis ord blir "spinnet" til et svar av ChatGPT uten kreditering eller pengestøtte? Brukes noens hardt fortjente kunnskap som en ikke-akkreditert kilde for disse svarene?

Relaterte Artikler

Se mer >>

Lås opp kraften til AI med HIX.AI!