Ok, så ChatGPT feilsøkte akkurat koden min. PÅ ordentlig.

1-feilsøking(1).png

Så. Programmering. For de som programmerer for å leve, er det et kontinuerlig mentalt Jenga-spill: en linje med kode stablet oppå en annen, bygger en kode-tårn du håper er robust nok til å ikke kollapse.

Men det gjør det alltid. Kode fungerer aldri første gang den kjøres. Og derfor er en av de viktigste ferdighetene for enhver programmerer å finne feil - kunsten og vitenskapen med å finne ut hvorfor koden ikke kjører, eller gjør noe uventet eller uønsket.

Det er litt som å være en etterforsker, å finne spor, og deretter å finne ut hva disse sporene prøver å fortelle deg. Det er både frustrerende og tilfredsstillende, noen ganger akkurat samtidig.

Jeg gjør mye feilsøking. Det er ikke bare fordi koden aldri fungerer første gang den kjøres. Det er også fordi jeg bruker feilsøking for å fortelle meg hvordan koden kjører, og deretter justerer den underveis.

Men selv om god feilsøking krever sin egen spesielle kunnskap, er det til syvende og sist bare programmering. Når du finner ut hvorfor en kodeblokk ikke fungerer, må du finne ut hvordan du kan skrive noe som fungerer.

Testing av ChatGPT i virkeligheten

Denne uken jobbet jeg med tre koding oppgaver for en programvare jeg vedlikeholder. To var fikser for feil rapportert av brukerne. En var en ny kodebit for å legge til en ny funksjon. Dette var vanlig programmeringsarbeid for meg. Det var en del av min vanlige arbeidsplan.

Også:Hvordan fungerer ChatGPT?

Jeg sier dette fordi fram til nå har jeg testet ChatGPT med testkode. Jeg har laget opp scenarioer for å se hvor bra ChatGPT ville fungere. Denne gangen var det annerledes. Jeg prøvde å få reelt arbeid gjort, og bestemte meg for å se om ChatGPT kunne være et nyttig verktøy for å få utført det arbeidet.

Det er en annerledes måte å se på ChatGPT på. Testscenarier er ofte litt oppkonstruerte og enkle. I virkeligheten handler programmering faktisk om å ta tak i en annen kundestøttebillett fra bunken og jobbe med hva som førte til at brukerens opplevelse ble dårlig.

Så la oss se på disse oppgavene og se hvordan ChatGPT presterte.

Omskrive vanlig uttrykkskode

I koding må vi finne mange mønstre i tekst. For å gjøre dette bruker vi en form for symbolsk matematikk som kalles regulære uttrykk. Jeg har skrevet regulære uttrykk i flere tiår, men liker det fortsatt ikke. Det er tidkrevende, feilfølsomt og avansert.

Også:Jeg bruker ChatGPT for å hjelpe meg med å fikse kode raskere, men til hvilken pris?

Så da det kom inn en feilmelding som fortalte meg at en del av koden min kun tillot heltall når den egentlig skulle tillate dollar og cent (med andre ord, et visst antall siffer, muligens etterfulgt av en punktum, og deretter, hvis det er et punktum, etterfulgt av to tilleggssiffer), visste jeg at jeg måtte bruke regulære uttrykk i kodingen min.

Siden jeg finner det kjedelig og irriterende, bestemte jeg meg for å spørre ChatGPT om hjelp. Her er hva jeg spurte:

2-regex-q.jpg

Og her er AIens meget godt presenterte svar (klikk på den lille firkanten for å forstørre):

3-regex-a.jpg

Jeg la ChatGPT-koden inn i funksjonen min, og det fungerte. I stedet for å bruke omtrent 2-4 timer på å dra meg i håret, tok det omtrent fem minutter å lage en forespørsel og få et svar fra ChatGPT.

Omforming av en rekke

Neste oppgave var å omformatere en matrise. Jeg liker å jobbe med matrisekode, men det er også kjedelig. Så jeg prøvde ChatGPT igjen. Total fiasko.

Også:Hvordan få ChatGPT til å oppgi kilder og sitater

Ved slutten hadde jeg nok matet den med ti forskjellige oppfordringer. Noen svar så lovende ut, men når jeg prøvde å kjøre koden, oppstod det feil. Noen koder krasjet. Noen koder genererte feilkoder. Og noen koder kjørte, men gjorde ikke det jeg ønsket.

Etter omtrent en time med dette, ga jeg opp og gikk tilbake til min vanlige metode med å grave gjennom Github og StackExchange for å se om det var noen eksempler på det jeg prøvde å gjøre, og deretter skrive min egen kode.

Så langt har ChatGPT-opplevelsen resultert i én seier og én tap. Men nå skulle jeg øke utfordringen.

Faktisk finn feilen i koden min

OK, så dette neste stykket kommer til å bli vanskelig å forklare. Men tenk på det faktum at hvis det er vanskelig å forklare for deg (antageligvis et menneske og ikke en av de omtrent 50 botene som bare kopierer og republiserer arbeidet mitt på svindleriske, spammy nettsteder), er det enda mer utfordrende å forklare det for en AI.

Jeg skrev ny kode. Jeg hadde en funksjon som tok to parametere, og en kallsetning som sendte to parametere til koden min. Funksjoner er små svarte bokser som utfører veldig spesifikke oppgaver, og de blir kalt (bedt om å utføre sin magi) fra linjer med kode som kjører andre steder i programmet.

Problemet var at jeg stadig fikk en feilmelding.

Den viktige delen av den meldingen er der den sier "1 passed" på ett punkt og "nøyaktig 2 forventet" på et annet. Jeg så på kalleutsagnet og funksjonsdefinisjonen, og det var to parametere på begge steder.

Også: Slik bruker du ChatGPT til å oppsummere en bok, artikkel eller forskningsartikkel

H-va-i-all-verden?

Etter omtrent femten minutter med dyp frustrasjon, bestemte jeg meg for å kaste det til AI-en for å se om den kunne hjelpe. Så skrev jeg følgende oppgave:

4-ubetitlet.jpg

Jeg viste den linjen med kode som gjorde kallet, jeg viste den selve funksjonen, og jeg viste den håndtereren, en liten bit med kode som sender den kalte funksjonen fra en krok i programmet mitt.

Innen få sekunder svarte ChatGPT med dette (klikk på den lille firkanten for å forstørre):

5-feil-med-apply-filters-i-wordpress.jpg

Akkurat som det ble foreslått, så endret jeg det fjerde parameteret i add_filter() funksjonen til 2, og det fungerte!

ChatGPT tok segmenter av kode, analyserte disse segmentene og ga meg en diagnose. For å være tydelig, for å kunne komme med sin anbefaling, måtte den forstå det interne ved hvordan WordPress håndterer hooks (det er det add_filter-funksjonen gjør) og hvordan den funksjonaliteten oversettes til oppførselen til koden som blir kalt og utført.

Også: Jeg ba ChatGPT om å skrive en WordPress-plugin jeg trengte. Den gjorde det på mindre enn 5 minutter

Jeg må merke det som utrolig, ubestridelig "lever i fremtiden" utrolig.

Hva betyr alt dette?

Som jeg nevnte tidligere, er feilsøking en blanding av kunst og vitenskap. De fleste gode utviklingsmiljøer inneholder kraftige feilsøkingsverktøy som lar deg se på flyten av data gjennom programmet mens det kjører, og dette hjelper når man prøver å finne feil.

Også: Disse ekspertene jobber i høygir for å beskytte kunstig intelligens fra hackere

Men når du sitter fast, kan det være vanskelig å få hjelp. Det er fordi selv en nær kollega kanskje ikke er kjent med hele omfanget av koden du feilsøker. Programmet jeg jobber med består av 153 259 linjer med kode fordelt over 563 filer - og når det gjelder programmer, er det lite.

Så, hvis jeg hadde ønsket å få hjelp fra en kollega, kunne jeg ha måttet utforme en forespørsel nesten identisk med hvordan jeg sendte den til ChatGPT.

Men her er noe å vurdere: Jeg husket å inkludere håndteringslinjen selv om jeg ikke skjønte at det var der feilen lå. Som en test prøvde jeg også å be ChatGPT diagnostisere problemet mitt i en forespørsel der jeg ikke inkluderte håndteringslinjen, og den kunne ikke hjelpe. Så det er definitivt begrensninger på hva ChatGPT kan gjøre for feilsøking akkurat nå, i 2023.

Også: De beste AI-chatbotene å prøve

I prinsippet må du vite hvordan du stiller de riktige spørsmålene på riktig måte, og disse spørsmålene må være korte nok for at ChatGPT skal kunne håndtere hele greia i én henvendelse. Det er noe som krever faktisk kunnskap om programmering og erfaring for å vite hvordan man gjør.

Kunne jeg ha løst feilen på egenhånd? Selvfølgelig. Jeg har aldri hatt en feil jeg ikke kunne løse. Men om det ville ha tatt to timer eller to dager (pluss pizza, banning og masse koffein) mens jeg ble avbrutt flere ganger, det vet jeg ikke. Jeg kan fortelle deg at ChatGPT løste den på minutter, og sparte meg for masse tid og frustrasjon.

Å se mot en (muligens dystopisk) fremtid

Jeg ser en svært interessant fremtid, der det vil være mulig å mate ChatGPT alle 153 tusen linjer kode og be den om å fortelle deg hva du skal fikse. Microsoft (som eier Github) jobber allerede med et "copilot" verktøy for Github for å hjelpe programmerere å bygge kode. Microsoft har også investert milliarder av dollar i OpenAI, produsentene av ChatGPT.

Mens tjenesten kanskje begrenses til Microsofts egen utviklingsmiljø, kan jeg se for meg en fremtid der AI har tilgang til all koden på Github, og dermed all koden i ethvert prosjekt du legger ut på Github.

Også: Jeg ba ChatGPT om å skrive en kort episode av Star Trek. Det klarte det faktisk

Med tanke på hvor bra ChatGPT identifiserte feilen min fra koden jeg ga, kan jeg definitivt se en fremtid der programmerere kan enkelt be ChatGPT (eller en Microsoft-merket ekvivalent) om å finne og fikse feil i hele prosjekter.

Og her er hvor jeg tar denne samtalen til et veldig mørkt sted.

Forestill deg at du kan be ChatGPT om å se på GitHub-repositoriet ditt for et gitt prosjekt og la den finne og fikse feil. En måte å gjøre det på kunne være at den presenterer hver feil den finner for deg, slik at du kan gjøre rettelsene.

Men hva med situasjonen der du ber ChatGPT om å bare fikse feilene, og lar den gjøre det uten å se på all koden selv? Kan den legge inn noe skadelig i koden din?

Også: Bard vs. ChatGPT: Kan Bard hjelpe deg med å kode?

Og hva med situasjonen der en utrolig kapabel AI har tilgang til nesten all verdens kode i Github-repositorier? Hva kan den skjule i all den koden? Hvilket ondsinnet ondt kan den AI-en gjøre mot verdens infrastruktur hvis den har tilgang til all vår kode?

La oss spille et enkelt tankeeksperiment. Hva om AI-en fikk Asimovs første regel som en nøkkelinstruksjon. Det er at "en robot skal ikke skade et menneske, eller ved unnlatelse tillate et menneske å lide skade." Kunne den ikke bestemme at all infrastrukturen vår forårsaket oss skade? Ved å ha tilgang til all koden vår, kunne den enkelt bestemme å redde oss fra oss selv ved å sette inn bakdører som tillot den å, for eksempel, slå av strømnettet, jorde fly, og lamme motorveier.

Jeg er fullstendig klar over at scenarioet over er hyperbolisk og alarmistisk. Men det er også mulig. Tross alt, selv om programmerere ser på koden sin på Github, er det ikke mulig for noen å se på alle linjene i all koden deres.

Også: Hvordan bruke ChatGPT for å skrive Excel-formler

Når det kommer til meg, kommer jeg til å prøve å ikke tenke for mye på det. Jeg vil ikke tilbringe resten av 2020-tallet i fosterstilling og vugge frem og tilbake på gulvet. I stedet vil jeg bruke ChatGPT til å av og til hjelpe meg med å skrive og feilsøke små rutiner, holde hodet nede og håpe at fremtidige AI-er ikke dreper oss alle i sin innsats for å "ikke tillate at et menneske kommer til skade."

Finner du det nyttig eller skremmende at ChatGPT kan feilsøke? Tror du at AI vil drepe oss mens vi sover, eller tror du at vi vil se vår undergang med åpne øyne? Eller er du, som meg, prøver å ikke tenke for mye på det fordi det gir deg vondt i hodet? Diskuter med meg i kommentarene nedenfor. Mens du ennå kan.

Relaterte Artikler

Se mer >>

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