Jeg bruger ChatGPT til at hjælpe mig med at rette kode hurtigere, men til hvilken pris?

billede5.jpg

Tidligere på ugen viste jeg dig, hvordan ChatGPT kunne skabe en fuldendt WordPress-plugin, som levede op til en bestemt, omend noget rudimentær, funktions specifikation. Nu fortsætter jeg mine tests af ChatGPT for at få en fornemmelse af, om det kan være et nyttigt værktøj - i dette tilfælde til at få teknisk vejledning.

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

Som jeg har gjort i tidligere undersøgelser af ChatGPT, er min tekst skrevet i almindelig eller fed skrift, og AI'ens svar er i kursiv. Først vil jeg vise dig spørgsmålene og svarene, og derefter vil jeg diskutere implikationerne.

Forståelse af ændringer i programmeringssprog

Min hostingudbyder flytter alle sine websteder fra den meget forældede PHP 7.4 til PHP 8. PHP er et webprogrammeringssprog, som WordPress og en række andre webstyringsværktøjer er afhængige af. Jeg havde et par plugins, der ikke var kompatible med PHP 8, og jeg ønskede at identificere, hvilke dele af deres kode jeg skulle finde og rette.

Normalt ville jeg grave mig ned i PHP.net-siden, lave en masse Google-søgninger og kigge rundt i kommentarerne på StackExchange for at finde ud af, hvilket programmeringsarbejde jeg skulle udføre. Men det er en lidt rodet og tidskrævende proces. I stedet stillede jeg et detaljeret, direkte spørgsmål til ChatGPT og fik et meget brugbart svar tilbage, herunder blokke af illustrativ kode.

Jeg har problemer med PHP extract-funktionen, som giver en fatal fejl, når den ikke får en array som argument. I PHP 7.4 fik jeg ikke fejlen, men det virker til at ske i PHP 8. Er der sket ændringer for extract i PHP 8?

I PHP 8 er adfærden for extract()-funktionen ændret for at være mere stram. I tidligere versioner af PHP ville extract()-funktionen blot returnere falsk, hvis den ikke blev givet et array, men i PHP 8 vil den kaste en fatal fejl, hvis den ikke får et array. Denne ændring blev foretaget for at forbedre funktionens robusthed og for at hjælpe med at forhindre potentielle fejl forårsaget af uventet input.

Du kan tjekke, om variablen, der sendes til funktionen, er en array eller ej ved at bruge funktionen is_array() før kaldet til extract().

billede3.jpg

Du kan også bruge funktionen array_key_exists() til at tjekke, om en variabel er en array eller ej.

billede6.jpg

Alternativt kan du bruge ... operatoren til at destrukturere arrayet til variabler.

billede7.jpg

Som det viste sig, var ChatGPT's svar ekstremt hjælpsomt, og jeg havde den fejl rettet i løbet af få minutter. En stor del af at kunne rette den fejl var at vide, hvor man skulle kigge. ChatGPT præciserede, hvordan adfærden ændrede sig i funktionen mellem versionerne af PHP.

Da jeg forsøgte at fremtidssikre hele pluginnet, som jeg flyttede til den nye version, spurgte jeg også dette:

Hvilke PHP-funktioner er sandsynligt at gå i stykker, når du skifter fra PHP 7.4 til PHP 8?

Når du skifter fra PHP 7.4 til PHP 8, er der nogle funktioner og funktioner, der kan brydes eller opføre sig anderledes. Her er nogle af de mest bemærkelsesværdige ændringer, der potentielt kan forårsage problemer:

  • Funktionen extract(), som nævnt i det foregående svar, kaster nu en fatal fejl, hvis den ikke får en array som argument.
  • Funktionen each() er blevet fjernet i PHP 8.0. Du kan i stedet bruge foreach eller array_keys() og current().
  • Funktionen create_function() er blevet fjernet i PHP 8.0. Det anbefales at bruge anonyme funktioner i stedet.
  • Konstruktionen list(), når den bruges sammen med foreach, returnerer nu nøglen og værdien som separate variabler i stedet for som en enkelt array.
  • Funktionen __autoload() er blevet fjernet i PHP 8.0. Du bør i stedet bruge spl_autoload_register().
  • Variablen $php_errormsg er blevet fjernet i PHP 8.0. Du bør i stedet bruge funktionen error_get_last().
  • Nogle af de forældede funktioner i tidligere PHP-versioner er nu fjernet i PHP 8.0. Specifikt er create_function(), each(), __autoload() og $php_errormsg fjernet.

Dette er blot nogle få eksempler på ændringer, der kan forårsage problemer, når du skifter fra PHP 7.4 til PHP 8. Det er en god idé at teste din kode og applikationer grundigt, inden du opgraderer for at sikre, at alt fungerer som forventet.

Bemærk, at ChatGPT brugte udtrykket "som nævnt i det foregående svar". Den er i stand til at følge med i svar i samtalen. Det er både "wow" og skræmmende.

I det kodeeksempel, jeg var ved at revidere, viste det sig, at den oprindelige udvikler (som ikke længere er involveret) brugte create_function meget. Jeg indså ikke, at det var blevet forældet. Men med den nyttige liste ovenfor søgte jeg bare i koden og fandt, hvad der skulle opdateres og omskrives. Derefter bad jeg ChatGPT om at vise mig måder at erstatte den funktion på.

Hvad er en god måde at omskrive kode ved hjælp af create_function i PHP? Kan du give mig et eksempel med create_function og derefter et eksempel med den aktuelt korrekte mekanisme?

create_function er en forældet funktion i PHP, der blev brugt til at oprette anonyme funktioner. Det anbefales ikke længere at bruge denne funktion, da den er blevet fjernet i PHP 8.0. I stedet kan anonyme funktioner, også kendt som closures, oprettes ved hjælp af function-nøgleordet.

Her er et eksempel på brugen af create_function:

billede2.jpg

Og her er den tilsvarende kode ved brug af en anonym funktion:

billede8.jpg

Derudover kan du bruge nøgleordet use til at videregive variabler til lukningen.

billede1.jpg

Generelt anbefales det at bruge anonyme funktioner i stedet for create_function, da de har forbedret ydeevne og bedre læsbarhed.

Som det viser sig, var det en meget klar forklaring, og jeg kunne hurtigt omskrive koden korrekt. Den plugin kører nu problemfrit i min hostingudbyders nye PHP 8-miljø.

MacOS teknisk support

Da jeg undersøgte min artikel om farene ved Optimize Mac Storage, havde jeg også nogle spørgsmål. Som min artikel viste, gik jeg ind og lavede nogle tests for at validere nogle af mine bekymringer. Men som en hurtig måde at indsnævre min forskning på, spurgte jeg ChatGPT dette:

Hvis du bruger MacOS-funktionen Optimer Mac-lagring, vil Time Machine så lave ufuldstændige sikkerhedskopier, fordi nogle filer kun er repræsenteret som stubbe på den lokale maskine?

"Optimer Mac Storage"-funktionen i macOS bruger iCloud til at flytte sjældent anvendte filer fra din Mac til skyen og gemmer en "stub"-fil på din lokale maskine for at repræsentere den oprindelige fil. Dette kan spare plads på din Macs harddisk.

Når Time Machine er konfigureret til at lave sikkerhedskopier, vil den sikkerhedskopiere alle filer, herunder dem, der er blevet fjernet ved brug af "Optimer Mac Storage." Dog vil den kun sikkerhedskopiere de pladsholdere, der repræsenterer de fjernede filer i stedet for de originale filer.

Dette betyder, at hvis du genopretter din Mac fra en Time Machine-sikkerhedskopi, der blev lavet, mens "Optimer Mac-lagerplads" var aktiveret, vil eventuelle overførte filer ikke blive inkluderet i genoprettelsen og skal downloades fra iCloud igen.

Det er vigtigt at bemærke, at hvis du har mange filer, der er udfaset, kan dine Time Machine-backups fylde mere plads end hvis du ikke bruger Optimer Mac-lagring, fordi Time Machine sikkerhedskopierer stubfilerne, der optager mindre plads, men som Time Machine vil behandle som de originale filer.

Jeg er bekymret for det. I det mindste med Google har forfattere en chance for, at søgemaskinen sender trafik til artiklen som en form for kompensation for at dele den information. Men med en chatbot som ChatGPT går den oprindelige tråd tabt. Selvfølgelig får jeg produktivitetsfordelen ved et hurtigt svar. Men har nogen derude mistet anerkendelse for deres arbejde?

Bliv hængende. Denne bølge af generativ kunstig intelligens skaber store røre. Hold dig orienteret med mig og ZDNET, mens vi prøver at forstå, hvad det betyder for os alle.

ChatGPT, når du besvarer et spørgsmål, tager du så viden fra andre, som har bidraget, og tager du arbejde og ære væk fra de oprindelige menneskelige kilder?

Som en AI-sprogmodel oprettet af OpenAI har jeg ingen personlige meninger eller tanker. Jeg kan dog fortælle dig, at informationen, jeg bruger til at generere mine svar, er baseret på de data, jeg er blevet trænet på, hvilket består af store mængder tekst fra internettet. Denne tekst blev skrevet af mange forskellige mennesker og kilder, og jeg har ikke evnen til at tilskrive individuelle personer æren for den information, jeg præsenterer. Mit mål er at give nyttig og præcis information for at hjælpe brugerne med at finde de svar, de leder efter. Det er vigtigt at huske, at mine svar genereres ud fra mønstre i den data, jeg er blevet trænet på, og ikke altid er helt præcise eller opdaterede.

Så ja. Det der. "Store mængder tekst fra internettet." Gå videre, folkens. Intet at se her.

Så kort sagt vil Time Machine lave ufuldstændige sikkerhedskopier, hvis du bruger funktionen "Optimer Mac-opbevaring", da den kun sikkerhedskopierer stub-filerne i stedet for de originale filer, der er blevet fjernet og lagt i skyen.

Det var et rigtigt svar.

Implikationer

Nå, det sparede helt sikkert tid. Normalt indebærer programmering på internettet en dans mellem kodnings- og fejlfinding-miljøet og en masse inkrementelle websøgninger, hvor spor jagtes og diskussioner og kommentarer læses.

Tag ikke fejl af mig. Den proces kan være meget informativ, og der er en masse folklore begravet i de kommentarer, du aldrig får fra en chatbot. Men det er ikke en effektiv brug af tid, når du har travlt eller har en kritisk deadline. At stille de kodelignende spørgsmål til ChatGPT viste sig at være meget effektivt.

Som med alt AI skal du være opmærksom på, at der er huller i AI'ens viden, og at du meget vel kan få helt forkerte svar. Men at bruge ChatGPT som et ligeud redskab som enhver anden i min værktøjskasse viste sig at være ret produktivt.

Jeg undrer mig dog over, hvor den har fået sin information fra. Findes der mon en forfatter derude, som jeg, der har skrevet en dybt informativ artikel om extract eller create_function, hvis ord bliver "spundet" ind i ChatGPT's svar uden kredit eller monetarisering? Bliver en persons hårdt vundne viden brugt som ukrediteret kildemateriale til disse svar?

Relaterede Artikler

Se mere >>

Lås op for AI-kraften med HIX.AI!