ChatGPT er skremmende god til å skrive kode.
Alle har hørt om ChatGPT sånn som det er nå. Det er en AI-drevet chatbot som bruker naturlige språkbehandlingsmodeller for å gi svar på kompliserte spørsmål. Disse svarene er ikke nødvendigvis alltid nøyaktige, men de har en tendens til å være detaljerte nok til at du kan faktasjekke svarene som det gir deg ganske enkelt. Hva om du skulle ta ChatGPT og prøve å skrive kode med den?
Som det viser seg, er det noe du kan gjøre med ulik grad av suksess, avhengig av språkene du vil bruke og hva du vil oppnå med dem. Jeg satte det på prøve for å se hvor godt det ville klare seg på forskjellige programmeringsspråk for å fullføre forskjellige oppgaver. Jeg vil heller ikke gjøre noen endringer i koden som ChatGPT produserer, jeg vil bare veilede den til å lage arbeidskode hvis koden den lager ikke fungerer.
Jeg brukte tre språk som jeg allerede er kjent med for å prøve ChatGPT: Python, C og Java. Resultatene var spesielt overraskende ettersom den slet litt med Python på grunn av den abstrakte naturen til det jeg ba den om å gjøre, men den håndterte C og grunnleggende Java med letthet. jeg har også
opprettet et GitHub-depot med all koden her tilgjengelig slik at du kan prøve den ut selv.Automatisk sidesjekking i Python
Python er mitt favorittprogrammeringsspråk å jobbe i, og det er takket være kraften den har og dens enkelhet i bruk. Jeg har skrevet mange verktøy i Python tidligere for å automatisere deler av arbeidsflyten min, og bacheloroppgaven min i informatikk ble til og med gjort helt gjennom Python. Jeg spurte ChatGPT om å skrive et program som kunne skanne en nettside for endringer med jevne mellomrom, og det gjorde stort sett susen.
Problemet med koden ovenfor som den gir meg er at den ikke simulerer en ekte nettleser. Nettsteder ser etter en parameter i nettleseren din som kalles en "brukeragent", og denne definerer hva slags nettleser du bruker eller om du er en bot. Mange nettsteder godtar ikke tilkoblinger som ikke definerer en brukeragent, og jeg traff på dette da jeg pekte på XDA. Jeg ba den legge til egendefinerte overskrifter i forespørselen om å simulere en ekte nettleser, og det fulgte.
Koden gitt ovenfor fungerer for statiske nettsteder, men problemet er at mye av innholdet du leser på nettet er dynamisk. Hvis en side returnerer gjeldende tid, for eksempel et sted på siden, vil koden ovenfor alltid si at siden har endret seg hver gang den oppdateres. Da jeg påpekte dette til ChatGPT, ble det forvirret og ga meg en helt feil løsning på problemet.
Ovenstående er en feil forklaring på hvordan hasher fungerer. Poenget med en hash er at en mindre endring av input vil resultere i en stor forskjell i hash, ved at to hashes i utgangspunktet er uforlignelige. Da jeg fortalte det at det var en feil påstand å antyde at hasjer var den beste måten å sammenligne og skanne etter endringer, svarte den med en unnskyldning og ga meg noe som gjorde arbeid.
Det eneste problemet jeg har oppdaget med koden ovenfor er at for større nettsteder er det beregningsmessig dyrt da det bruker naturlig språkbehandling for å sammenligne og beregne forskjellen mellom dem. Likevel er en terskel på 5 % i endret innhold god nok for de fleste nettsteder hvis du ønsker å se etter oppdateringer, og du kan justere terskelen om nødvendig. Det tok litt tid, men det kom til slutt.
Det er mange grunner til at du kanskje vil ha en nettskraper som en av disse, og selv om det finnes verktøy der ute som kan gjøre det, er det kult å bygge din egen. Du kan bruke dem til pakkesporing eller, i mitt tilfelle, skanning etter nye eiendommer som går til leie på lokale eiendomssider.
Passordgenerator i C
Siden sikkerhet har vært på topp i det siste, er det viktig at du bruker sikre passord og også bruker tofaktorautentisering. Hvis du sliter med den sikre passorddelen, er det ganske enkelt å skrive opp en passordgenerator i C. ChatGPT håndterte det ganske enkelt, og det eneste problemet jeg oppdaget var at da jeg ba den om å lage en passordgenerator, importerte den ikke String C-biblioteket. Jeg fortalte det det, og det la det til importen i starten.
Jeg økte den globale variabelen MAX_LENGTH til 32 tegn i stedet for 16, og den genererte følgende passord for meg: aW3H0E(&FPQvG8B@4*()+4yRKTKB#U0O. Man kan trygt si at det fungerer!
Kalkulator i Java
Et ganske grunnleggende program som mange har erfaring med i Java, er å lage en kalkulator. Det er en av de tidligste utfordringene som informatikere vil møte i sin programmeringskarriere, uansett hvilket språk de tar opp først. Jeg ba ChatGPT om å skrive en kalkulator i Java som benyttet seg av minst to klasser, og den fungerte perfekt på første forsøk.
Dette er kalkulatorklassen:
Dette er hovedklassen:
Å lage begge disse klassene i min IDE, IntelliJ, og kjøre hovedklassen resulterer i en perfekt fungerende kalkulatorprogram som tar inn to tall og en operator for addisjon, subtraksjon, multiplikasjon eller inndeling.
ChatGPT er anstendig til programmering
Selv om jeg ikke ville stole på ChatGPT for å gjøre alt for deg, er det klart at det kan gjøre en ganske god jobb med å lage programmer og ta hensyn til kritikk når det er problemer. Jeg ble overrasket over å se det foreslå en hashing-algoritme som en måte å skille mellom mindre endringer på en nettside, men bortsett fra det slet den ikke med de mer grunnleggende oppgavene overhodet. Selv når det gjelder Python-programmet, hadde det den rette ideen helt fra begynnelsen, og på mer statiske sider ville det ha fungert perfekt.
ChatGPT kommer selvfølgelig ikke akkurat til å erstatte programmerere med det første, men det er på vei til å bli et veldig godt verktøy i arbeidsstyrken. GitHubs Copilot, for eksempel benytter seg av GPT teknologi for å hjelpe folk med å skrive kode, og den kommer bare til å bli mer avansert ettersom tiden går. Selv om du er en nybegynnerprogrammerer, kan denne typen verktøy potensielt hjelpe deg å lære hvis du kunne stole på det fullt ut, men noen ganger gjør det rare feil, som vi har sett.
Selvfølgelig er eksemplene gitt her veldig grunnleggende, og de fleste programmerere vil være i stand til å skrive dem ganske enkelt, men det er ikke poenget. Den er skremmende god til å bygge løsninger på enkle oppgaver og ser ut til å håndtere mer komplekse oppgaver ganske bra også. Vi er spente på å se hvor verktøy som disse går i fremtiden og hjelper folk å forbedre ferdighetene sine.