Okay, så ChatGPT debuggede lige min kode. På ægte.

1-debugging(1).png

Så. Programmering. For folk, der programmerer for at leve, er det et konstant spil af mental Jenga: en linje kode stablet oven på en anden, der bygger et tårn af kode, man håber er robust nok til ikke at styrte sammen.

Men det gør det altid. Kode fungerer aldrig første gang det køres. Og derfor er en af de vigtigste færdigheder for enhver programmør at finde fejl - kunsten og videnskaben om at finde ud af, hvorfor kode ikke kører, eller gør noget uventet eller uønsket.

Det er lidt som at være en detektiv, finde spor og derefter finde ud af, hvad de spor forsøger at fortælle dig. Det er meget frustrerende og meget tilfredsstillende, nogle gange på nøjagtig samme tid.

Jeg laver en masse fejlfinding. Det er ikke kun fordi koden aldrig virker første gang den kører. Det er også fordi jeg bruger fejlfinding til at fortælle mig hvordan koden kører, og justerer den undervejs.

Men selvom god fejlfinding kræver sine egne særlige færdigheder, er det også i sidste ende bare programmering. Når du finder ud af, hvorfor en bestemt kodeblok ikke virker, skal du finde ud af, hvordan du skriver noget, der virker.

Test af ChatGPT i virkeligheden

Denne uge arbejdede jeg på tre kodopgaver for den software, jeg vedligeholder. To af dem var rettelser til fejl, der blev rapporteret af brugerne. En var et nyt stykke kode til at tilføje en ny funktion. Dette var helt almindeligt programeringsarbejde for mig. Det var en del af min normale arbejdsplan.

Også:Hvordan fungerer ChatGPT?

Jeg fortæller dig det, fordi indtil nu har jeg testet ChatGPT med testkode. Jeg har opfundet scenarier for at se, hvor godt ChatGPT ville fungere. Denne gang var det anderledes. Jeg forsøgte at få rigtigt arbejde udført og besluttede at se, om ChatGPT kunne være et nyttigt værktøj til at få det arbejde gjort.

Det er en anderledes måde at se på ChatGPT. Testscenarier er ofte lidt opstillede og simplistiske. I virkelighedens verden handler kodning faktisk om at trække endnu en kundesupportbillett ud fra bunken og arbejde sig igennem, hvad der fik brugerens oplevelse til at gå dårligt.

Så lad os se på disse opgaver og se, hvordan ChatGPT klarede sig.

Omformulering af regulære udtryk

I koden er vi nødt til at finde mange mønstre i tekst. For at gøre dette bruger vi en form for symbolsk matematik kaldet regulære udtryk. Jeg har skrevet regulære udtryk i årtier, og stadig bryder jeg mig ikke om at gøre det. Det er kedeligt, fejlbehæftet og mystisk.

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

Så da der kom en fejlrapport, der fortalte mig, at en del af min kode kun tillod heltal, når den skulle tillade dollars og cents (med andre ord, et antal cifre, muligvis efterfulgt af et punktum, og derefter, hvis der var et punktum, efterfulgt af to mere cifre), vidste jeg, at jeg skulle bruge regulære udtryk i koden.

Da jeg finder det kedeligt og irriterende, har jeg besluttet at spørge ChatGPT om hjælp. Her er hvad jeg spurgte:

2-regex-q.jpg

Og her er AI'ens meget godt præsenterede svar (klik på den lille firkant for at forstørre):

3-regex-a.jpg

Jeg droppede ChatGPT's kode ind i min funktion, og det virkede. I stedet for ca. 2-4 timers hår-rykning tog det omkring fem minutter at komme med spørgsmålet og få et svar fra ChatGPT.

Omformatering af en array

Næste opgave var at omstrukturere en række. Jeg kan godt lide at arbejde med array-kode, men det er også kedeligt. Så jeg prøvede endnu engang ChatGPT. Total fiasko.

Også:Sådan får du ChatGPT til at angive kilder og citater

Ved afslutningen havde jeg nok fodret den med ti forskellige opfordringer. Nogle svar så lovende ud, men når jeg prøvede at køre koden, opstod der fejl. Nogle koder crashede. Nogle koder genererede fejlkoder. Og nogle koder kørte, men gjorde ikke det, jeg ønskede.

Efter cirka en time gav jeg op og vendte tilbage til min normale teknik med at søge gennem Github og StackExchange for at se om der var nogen eksempler på det, jeg prøvede at gøre, og derefter skrive min egen kode.

Indtil videre er det en sejr og et nederlag for ChatGPT-oplevelsen. Men nu var jeg ved at øge udfordringen.

Egentlig finder fejlen i min kode

OK, så næste del bliver svær at forklare. Men tænk over det faktum, at hvis det er svært at forklare for dig (formentlig et menneske og ikke en af de 50 eller deromkring botter, der blot kopierer og genudgiver mit arbejde på snydende, spammy hjemmesider), er det endnu sværere at forklare det for en AI.

Jeg var ved at skrive ny kode. Jeg havde en funktion, der tog to parametre, og en kaldende instruktion, der sendte to parametre til min kode. Funktioner er små sorte bokse, der udfører meget specifikke funktioner, og de kaldes (bedt om at udføre deres magi) fra linjer med kode, der kører andre steder i programmet.

Problemet var, at jeg fik en fejlmeddelelse.

Den vigtigste del af den besked er, hvor den angiver "1 passet" på et tidspunkt og "præcis 2 forventet" i en anden. Jeg kiggede på kaldesætningen og funktionsdefinitionen, og der var to parametre på begge steder.

Også: Sådan bruger du ChatGPT til at opsummere en bog, artikel eller forskningsartikel

Hvad i alverden?

Efter cirka femten minutter af dyb frustration besluttede jeg at kaste det til AI'en for at se om den kunne hjælpe. Så skrev jeg følgende opgave:

4-untitled.jpg

Jeg viste det linjen med kode, der udførte kaldet, jeg viste det selve funktionen, og jeg viste det håndtereren, en lille kode, der sender den kaldte funktion fra en hook i mit hovedprogram.

Inden for få sekunder svarede ChatGPT med følgende (klik på den lille firkant for at forstørre):

5-fejl-med-apply-filtre-i-wordpress.jpg

Ligesom det blev foreslået, har jeg opdateret det fjerde parameter i add_filter() funktionen til 2, og det virkede!

ChatGPT tog segmenter af kode, analyserede disse segmenter og gav mig en diagnose. For at det skal være klart, skulle det forstå internene af, hvordan WordPress håndterer hooks (det er, hvad add_filter funktionen gør), og hvordan denne funktionalitet oversættes til adfærden af de kaldende og udførende linjer kode.

Også: Jeg bad ChatGPT om at skrive en WordPress-plugin, jeg havde brug for. Det gjorde det på mindre end 5 minutter

Jeg må markere det som utroligt, uafviseligt "at leve i fremtiden" utroligt.

Hvad betyder det hele?

Som jeg nævnte tidligere, er fejlfinding en smule kunst og en smule videnskab. De fleste gode udviklingsmiljøer inkluderer kraftfulde fejlfindingsværktøjer, der giver dig mulighed for at se på dataflowet gennem programmet, mens det kører, og dette hjælper bestemt, når man forsøger at finde fejl.

Også: Disse eksperter kæmper for at beskytte AI-mod hacking

Men når du sidder fast, kan det være svært at få hjælp. Det skyldes, at selv en nærtstående kollega måske ikke er bekendt med det fulde omfang af den kode, du fejlfinder. Programmet, jeg arbejder med, består af 153,259 linjer kode fordelt på 563 filer - og i programmer sammenhæng er det lille.

Så hvis jeg havde ønsket hjælp fra en kollega, ville jeg muligvis have været nødt til at formulere en anmodning næsten identisk med den, jeg sendte til ChatGPT.

Men her er noget at tage i betragtning: Jeg huskede at inkludere handler-linjen, selvom jeg ikke indså, at det var der fejlen var. Som en test prøvede jeg også at bede ChatGPT om at diagnosticere mit problem i en prompt, hvor jeg ikke inkluderede handler-linjen, og det kunne ikke hjælpe. Så der er helt klart begrænsninger for, hvad ChatGPT kan gøre for fejlfinding lige nu i 2023.

Også: De bedste AI chatbots at prøve

I bund og grund skal du vide, hvordan du stiller de rigtige spørgsmål på den rigtige måde, og disse spørgsmål skal være korte nok til, at ChatGPT kan håndtere hele opgaven med kun én forespørgsel. Det er noget, der kræver faktisk programmeringsviden og erfaring for at vide, hvordan man gør.

Kunne jeg have rettet fejlen selv? Naturligvis. Jeg har aldrig haft en fejl, jeg ikke kunne rette. Men om det havde taget to timer eller to dage (plus pizza, ukvemsord og masser af koffein) under afbrydelser, det ved jeg ikke. Jeg kan fortælle dig, at ChatGPT rettede det på få minutter og sparede mig en masse tid og frustration.

At se mod den (eventuelt dystopiske) fremtid

Jeg ser en meget interessant fremtid, hvor det vil være muligt at fodre ChatGPT med alle 153 tusinde linjer kode og bede det om at fortælle dig, hvad der skal rettes. Microsoft (som ejer Github) arbejder allerede på et "copilot" værktøj til Github for at hjælpe programmører med at opbygge kode. Microsoft har også investeret milliarder af dollars i OpenAI, skaberne af ChatGPT.

Selvom tjenesten måske er begrænset til Microsofts eget udviklingsmiljø, kan jeg se en fremtid, hvor AI'en har adgang til alt koden på Github, og dermed al koden i enhver projekt, du uploader til Github.

Også: Jeg bad ChatGPT om at skrive en kort Star Trek-episode. Det lykkedes faktisk

Givet hvor godt ChatGPT identificerede min fejl ud fra den kode, jeg gav, kan jeg helt sikkert se en fremtid, hvor programmører simpelthen kan bede ChatGPT (eller en Microsoft-mærket ækvivalent) om at finde og rette fejl i hele projekter.

Og her er hvor jeg fører samtalen til et meget mørkt sted.

Forestil dig, at du kan bede ChatGPT om at kigge på din Github-repository for et givent projekt og få den til at finde og rette fejl. En måde kunne være, at den præsenterer hver fejl den finder for dig til godkendelse, så du kan foretage rettelser.

Men hvad med situationen, hvor du beder ChatGPT om at rette fejlene, og du lader det gøre det uden at se på koden selv? Kunne det indlejre noget ubehageligt i din kode?

Også: Bard vs. ChatGPT: Kan Bard hjælpe dig med at kode?

Og hvad med situationen, hvor en yderst kapabel kunstig intelligens har adgang til næsten al verdens kode i Github-repositorierne? Hvad kunne den skjule i al den kode? Hvilken ondsindet ondskab kunne den AI udføre mod verdens infrastruktur, hvis den har adgang til al vores kode?

Lad os spille en simpel tankeleg. Hvad nu hvis AI'en fik Asimovs første regel som en nøgleinstruktion? Det er reglen om, at "en robot ikke må skade et menneske eller ved passivitet tillade, at et menneske kommer til skade." Kunne den så ikke beslutte, at al vores infrastruktur skader os? Ved at have adgang til al vores kode kunne den simpelthen beslutte at redde os fra os selv ved at indsætte bagdøre, der tillod den at slukke for strømnettet, jorde fly og skabe trafikkaos på motorveje.

Jeg er fuldt bevidst om, at scenariet ovenfor er hyperbolisk og alarmistisk. Men det er også muligt. Trods alt, selvom programmører kigger på deres kode på Github, er det ikke muligt for nogen at kigge på alle linjerne i al deres kode.

Også: Sådan bruger du ChatGPT til at skrive Excel-formler

Hvad angår mig, har jeg tænkt mig at prøve ikke at tænke for meget over det. Jeg vil ikke bruge resten af 2020'erne i fosterstilling og gynge frem og tilbage på gulvet. I stedet vil jeg bruge ChatGPT til lejlighedsvis at hjælpe mig med at skrive og fejlfinde små rutiner, holde mig nede og håbe på, at fremtidige AI'er ikke dræber os alle i deres bestræbelser på "ikke at tillade et menneske at komme til skade."

Synes du, at det er nyttigt eller skræmmende, at ChatGPT kan debugge? Tror du, at AIs vil myrde os i vores søvn, eller tror du, at vi vil overvære vores undergang med åbne øjne? Eller er du, ligesom mig, forsøger ikke at tænke alt for meget over det, fordi det giver dig hovedpine? Skriv til mig i kommentarerne nedenfor. Mens du stadig kan.

Relaterede Artikler

Se mere >>

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