9. August 2024

You get an AI, you get an AI, everybody gets an AI

Jeg må indrømme, at jeg er ret splittet i forhold til spørgsmålet omkring AI. Jeg bryder mig bestemt ikke om de negative sider af den, men samtidig er jeg fascineret af den tekniske side og det faktum, at jeg kan have en meningsfyldt “samtale” med den.

Hvis du, som jeg, er vokset op med tekstbaserede brugerflader, så har du også været vant til, at computeren oftest bare har svaret “Det ved jeg ikke, prøv at stille spørgsmålet igen”, og så var det din opgave at genstille spørgsmålet og forhåbentlig ramme det, som udvikleren af spillet/værktøjet havde forudprogrammeret. Det var især udpræget i Sierra Onlines Police Quest-serie, noget som måske fik Ron Gilbert til at vælge foruddefinerede ord med SCUMM-motoren til Monkey Island.

Konkret har jeg haft en meningsfuld udveksling med Googles Gemini AI, og den har sparet mig for en del forum-opslag. Jeg spurgte til, hvordan man bedst skriver sikker C-kode. C er et fantastisk sprog, fordi det er relativt let at læse og arbejde med, men samtidig farligt, fordi det er så nemt at begå fejl. Du er helt nede at røre “metallet” og kan f.eks nemt komme til at overskrive dele af computerens hukommelse, som dit program ikke har adgang til, hvis du ikke er omhyggelig med din kode. Der er no mercy. Buffer under/overflows er en af de mest typiske kilder til sikkerhedsfejl, og her er C-compileren ikke særlig hjælpsom med analyse, derfor skal du have fat i værktøjer som Valgrind og lign.

Det er så her Googles AI kommer ind i billedet, for jeg blev overrasket over detaljegraden i det svar, den gav. Den gav mig både “pointers” (hæ..) til sikre funktioner med fastdefinerede bufferstørrelser f.eks strncpy, snprintf, lavede kodeeksempler og kom med idéer til “best practices”, såsom at huske at aktivere alle compiler warnings og lave statisk analyse, input-validering osv.

Det er jo så op til mig, at vurdere, om AI’en er fyldestgørende og korrekt i sit svar, og der må jeg jo altså sige, at det ville - hvis jeg havde været en nybegynder - have taget mig væsentligt længere tid at finde de svar.

Det er i hvert fald min erfaring, at programmeringsguides - i bogform og online - kun giver dig brudstykker af den information, du skal bruge. Her formår AI’en faktisk med simple og effektive midler at sende mig i forskellige retninger. Det kan godt være, at hvis man er ny i faget, at man ikke lige får udforsket samtlige forslag… Men der bliver plantet et frø, med noget, man skal være opmærksom på senere, og det gør dig ultimativt til en bedre programmør i det lange løb.

Medmindre du skal skrive virkeligt lavniveau-kode, såsom enhedsdrivere eller lave udforskning af embeddede systemer, så vil jeg til enhver tid foreslå mere sikre sprog såsom Rust, Python, Java, C#, Go eller Swift. Men C og C++ er stadig sjove at programmere i, og vil være her om 50 år pga. den enorme mængde af legacy kode, så det er godt at have efaring med dem. Også ift. interoperabilitet med andre sprog. Mange Rust-libraries er f.eks wrappers omkring eksisterende C/C++-kode.

Links

Google Gemini
Valgrind

Add comment

Fill out the form below to add your own comments