Matomo

Debugging med ChatGPT i informatik

· 5 min read
Debugging med ChatGPT i informatik

I informatikfaget arbejdes der ofte med såkaldte ”worked examples”. I programmering kan det eksempelvis være videoer, der viser eksemplariske programmeringsprocesser, som eleverne skal følge og genskabe, indtil de (forhåbentlig) langsomt selv bliver i stand til at skabe en ny kode. I denne proces med at lære programmerne, ligger der et vist mentalt arbejde i at tilegne sig programmeringssprogets syntaks, særligt hvis sproget er tekstbaseret. Processen skaber ofte frustrationer hos nogle elever, fordi noget så simpelt som et forkert placeret komma eller en enkelt tastefejl kan gøre, at koden ikke fungerer.

De fleste programmeringsmiljøer vil hjælpe brugeren til at finde fejl i koden, men de beskeder, der skal hjælpe brugeren, er ikke altid nemme at forstå. Denne artikel viser, hvordan typiske problematikker i arbejdet med programmering kan afhjælpes med ChatGPT. Også hvad debugging (fejlretning) i informatik angår, kan ChatGPT bidrage positivt til elevernes læringsprocesser.

Herunder ses et eksempel med JavaScript i programmeringsmiljøet App Lab (fra code.org). Eksemplet er taget fra et worked example fra YouTube-kanalen MyApp:

I dette eksempel skal eleven lave et lille program, der kan omregne kroner til euro, når man har indtastet antallet af kroner og trykket på en knap. Men i den ovenstående kode, så bliver det ikke indholdet af variablen **euro**, der bliver sat ind som resultat, men i stedet tekststrengen ”euro”, ligegyldigt hvilket beløb i kroner der er blevet indtastet. Fejlen består altså i, at der er anførselstegn rundt om euro. Fejlen opstår ofte, fordi funktionen setText() i App Labb i udgangspunktet kommer med teksten "text" sat i anførselstegn, når man bruger netop den kodeblok:

Når man derefter trykker på ”text”, kommer det, man skriver, i udgangspunktet til at stå mellem de to anførselstegn. Selvom eleverne ser en video, hvor de to anførselstegn er blevet slettet, så er der en risiko for, at eleverne ikke opdager det. Når eleverne derefter kører koden, vil de ofte frustreres over, hvorfor programmet opfører sig ”forkert”. I App Lab kan man godt se, at et eller andet ikke helt er, som det skal være, idet der i dette tilfælde er en gul trekant ved linje tre. Holder man musen over trekanten, vil man få teksten:

De færreste elever vil helt forstå, hvad det betyder, og endnu færre vil formentlig forstå, at det betyder, at der skal laves noget om, ikke i linje tre, men i linje fire.

Eleverne kan selvfølgelig altid spørge deres klassekammerater eller læreren om hjælp, men alternativt kan de bruge ChatGPT til at hjælpe med at finde fejlen i koden. Arbejder eleverne i App Lab kræver det, at eleverne lige skifter til tekstredigering og derefter kopierer koden ind i ChatGPT:

ChatGPT har fint fanget fejlen og formår på en mere forståelig måde end App Lab at formidle, hvordan fejlen rettes. (Når ChatGPT skriver ”linje 5”, skyldes det, at den tæller linjen: ”Kan du finde fejlen i koden?” med). For at blive lidt klogere på hvorfor fejlen rettes på denne måde, kan vi spørge på følgende måde:

Vi får en rigtig fin forklaring på forskellen på, hvordan en variabel og en tekst-streng (string) syntaktisk adskiller sig fra hinanden i JavaScript og ovenikøbet en reference til variablen **euro** i linje fire.

Lad os tage endnu et eksempel fra samme kode, men denne gang er fejlen en simpel indtastningsgejl i linje tre (på billedet), hvor variabelnavnet burde være med lille begyndelsesbogstav:

Hjælpeteksterne, der kommer, hvis man holder musen over firkanten eller trekanten, er stadig ikke helt nemme at forstå. Denne gang får vi dog også hjælp af en decideret fejlmeddelelse, når vi forsøger at køre hele koden:

Fejlmeddelelsen kan dog stadig være svær at forstå, både fordi den er på engelsk og ikke giver et egentligt løsningsforslag. Er eleverne desuden ikke blevet introduceret til, hvad en "string" er, bliver det endnu sværere. Lad os i stedet prøve at spørge ChatGPT igen:

ChatGPT finder fejlen, beskriver den på et letforståeligt dansk, og vi får også et løsningsforslag. Hvis eleven er uforstående overfor, hvorfor det er vigtigt at være opmærksom på, hvorvidt man bruger store eller små bogstaver, kan ChatGPT spørges om dette:

ChatGPT forklarer præcist, hvorfor man skal være omhyggelig med små og store tegn, når man programmerer i JavaScript.

Jeg håber med ovenstående eksempler at have vist, hvordan ChatGPT kan bruges af eleverne i forsøget på at mindske deres mentale arbejde og de medfølgende frustrationer, som de skal igennem i arbejdet med at lære syntaksen i et programmeringssprog.


Relaterede artikler:

Domænekendskab i databasemodellering med ChatGPT i informatik
Et af de vigtigste aspekter af gymnasiefaget informatik er at få eleverne til at forstå og skabe digitale artefakter. Skabelsesprocessen af digitale artefakter indeholder tit en modelleringsproces – en proces, hvor en virkelighed (ofte kaldet for et domæne) skal analyseres og abstraheres og derefter…
Lær Unity med ChatGPT
I HTX-fag som kommunikation og it A, og især i teknikfaget digital design og udvikling, er der mange der kaster sig over spiludvikling i Unity. Der er givetvis også nogle der benytter Unity i informatik eller måske i teknologiforståelse i grundskolen - og jeg ved at Coding Pirates også bruger