LLM i programmeringsvardagen

Jag har, som alla andra, följt utvecklingen inom AI/LLM med nyfikenhet de senaste åren. Men också med gubbig skepticism angående vad AI kan göra för mig i mitt arbetsflöde. I går blev jag övertygad att inkorporera AI i mitt arbetsflöde framöver.

Jag har använt VS Code för merparten av min programmering de senaste åren, och därför var det busenkelt att börja använda Cursor. Cursor bygger på VS Code men har fullt ut integrerat AI i arbetsflödet.

AI löser, än så länge, inte de fundamentalt svåra problemen i min arbetsdag (den distillerade forskningen). Men nu är den tillräckligt bra för att hjälpa mig med många av de småmeckiga problemen som jag lägger en hel del tid på. Cursor är som en snabb och duktig forskningsassistent.

Användningsområde 1: snabba upp skrivandet av boilerplatekod

Det här är ett artificiellt exempel, medan användningsområde 2 och 3 redan har dykt upp naturligt i min vardag de första två dagarna med Cursor.

Om jag sitter med ett LaTeX-dokument och vill skapa ett diagram med indifferenskurvor så måste jag ge mig i kast med syntaxen för TikZ. Ganska meckigt och sällan värt det. Men med Cursor så är det bara att be om diagrammet, och koden genereras:

I ask Cursor for a diagram.

Resultatet är ganska bra, men inte perfekt: Cursor provides a diagram.

Men vi kan be Cursor att förbättra diagrammet. Cursor provides a diagram.

Resultatet blir betydligt bättre: Cursor provides a diagram.

Väldigt mycket smidigare än att sätta sig med TikZ-dokumentationen! Om jag hade velat förbättra figuren ytterligare så hade jag kunnat fråga vidare, eller pilla lite med koden själv (att läsa TikZ är betydligt enklare än att skriva det från scratch).

Användningsområde 2: lära mig bra stil och syntax i ett nytt programmeringsspråk

Här om dagarna fick vi ett papper accepterat. Som en del av processen har vi satt ihop ett “replication package”, och nu när själva publiceringsprocessen är över har jag tänkt att presentera vår (i mitt tycke snygga!) Juliakod för att lösa (“epi-econ”) epidemiologiekonomimodeller.

Som självlärd dilettantprogrammerare (och därpåtill nybörjare med programmeringsspråket Julia) så är jag väl medveten om att jag inte skriver kod som man ska. Jag får jobbet gjort, och Juliakoden är mycket snabbare än implementeringen i Python, men det finns fortfarande förbättringspotential.

För att se om Cursor kan hjälpa mig så frågar jag helt enkelt: “How do I improve this code.”

I ask Cursor for suggestions.

Cursor kommer med massa förslag, som jag med ett knapptryck kan implementera i min kod.

Cursor provides suggestions.

Här föreslår koden att jag borde ge bättre varningar och felmeddelanden när den numeriska algoritmen inte beter sig som jag önskar. Jag kände inte till syntaxen för @warn, Cursor fungerade som en kollega som kan Julia bättre än jag, och jag kan skriva bättre och mer korrekt Juliakod.

Användningsområde 3: hjälpa mig få överblick i ett stort projekt

Jag satt i dag och putsade på texten till ett working paper när en fråga väcktes: exakt hur är vår “constant risk”-specifikation beräknad? Vårt projekt är stort med många filer och många funktioner, så jag tänkte att det kunde vara värt att fråga Cursor.

I ask Cursor where it is.

Cursor svarar på en gång hur specifikationen är implementerad i koden, och dessutom ger den det hela en (rimlig) ekonomisk tolkning. Samtidigt går det att klicka på de delar av koden som den visar i sina utklipp, vilket är ett smidigt sätt att hoppa mellan de olika filerna i projektet.

Cursor shows and interprets.

Slutsats

Cursor löser inte ännu mina svåra programmeringsproblem, jag skulle inte be den att skriva mina lösningsalgoritmer. Men Cursor kan hjälpa mig att snabba på en del kluriga problem på vägen (“vad var syntaxen nu igen?”, “kan man göra det här på ett mer stilrent sätt?”, o.s.v.). Det är ganska imponerande!

Karl Harmenberg
Karl Harmenberg
Associate professor