”Jag tror att det finns utrymme för mänsklig intelligens”
Buggiga appar och program som kraschar är aldrig kul. Beatrice Åkerbloms forskning kan stötta programmerare i deras arbete – och därmed ge användare mer stabila program. AI kan göra en del av programmeringen, men människors analysförmåga behövs fortfarande, anser hon.

– Klumpigt skrivna datorprogram och svårläst kod drar till sig buggar, konstaterar Beatrice Åkerblom.
Men det vill hon motverka. I sin doktorsavhandling undersöker Åkerblom hur olika programmeringsspråk hanterar så kallade datatyper.
– Datatyper är kategorier som beskriver vilken slags data som kan lagras i ett program. Typerna definierar hur datamaterialet kan användas – vilka operationer som är meningsfulla att göra. Datatyper är till hjälp för både programmeraren och datorn, säger Beatrice Åkerblom.
Programmeringsspråk har egen grammatik
Några exempel på datatyper är heltal, personnamn, tecken och listor med innehåll. Datatyperna används på olika sätt av statiska respektive dynamiska programmeringsspråk.
– Precis som naturliga språk har programmeringsspråk en egen grammatik: Man får säga vissa ord på vissa ställen. Typsystemet är en del av den grammatiken, förklarar hon.
Beroende på om programmeraren arbetar i ett statiskt eller dynamiskt programmeringsspråk, får hen olika mycket stöd i sitt arbete med att förhindra fel för användare. Java och C++ är exempel på statiskt typade språk, medan Python och Javascript är dynamiskt typade.
Om programmeringsspråket har en statisk typkontroll innebär det att en analys görs innan programmet tillåts att starta. Genom matematisk bevisning kontrolleras så att alla typer stämmer. Om fel upptäcks får programmeraren ett meddelande om varför programmet inte kommer att kunna köras.
– Men om man ska kunna bevisa något matematiskt – ”det här är sant och gäller alltid” – krävs en viss säkerhetsmarginal i analysen. Ibland går det inte att få fram ett sådant bevis. Det betyder att programmet kommer att dömas ut trots att det egentligen skulle gå att köra, säger Beatrice Åkerblom.
Till skillnad från matematiken är vi människor ganska bra på att bedöma tveksamheter
Statiska programmeringsspråk är alltså säkra – men lite stelbenta. Dynamiska programmeringsspråk är betydligt mer flexibla. Där sker ingen kontroll av typer, utan programmet fungerar helt enkelt om rätt sorts data finns på rätt plats när programmet körs. Mer ansvar läggs på programmeraren som behöver hålla reda på datatyperna medan hen skriver programmet.
– Det finns ett utrymme där dynamiska språk har ett värde. Programmeraren kan ta hänsyn till andra faktorer och se om programmet kommer att fungera.
– Till skillnad från matematiken är vi människor ganska bra på att bedöma tveksamheter. För matematiken finns bara sant och falskt, men en människa kan se att programmet kommer att funka – givet att x inte inträffar.
Numera är det ganska vanligt att kombinera statiskt och dynamiskt inom programmering, berättar Åkerblom. Så var det inte när hon påbörjade sitt avhandlingsprojekt, och därför valde hon att undersöka hur typer används i det dynamiska Python.
– Avhandlingens viktigaste bidrag är att jag visar att vi statiskt kan typa stora delar av program skrivna i dynamiska programmeringsspråk. Men vi kommer inte kunna typa dem till 100 procent.
En annan viktig del av avhandlingen handlar om arrayer, en slags uppställningar med ett visst antal positioner. En lista är mer flexibel än en array, på en lista kan man lägga till eller ta bort. Men om en array har plats för 100 textsträngar kan man inte bara utöka den för att få plats med fler – man måste i stället skapa en större array.

– Jag har hittat på en ny typ av abstraktion som man kan använda för att hålla reda på delar av arrayer, som ett stöd för programmerare. Om du har en array och delar upp den i två går det ganska lätt att hålla reda på. Men om du har 500 operationer och alla ska splittas blir det svårare. Och det är otroligt tidskrävande att hitta fel i den här typen av program.
– Min lösning gör det möjligt att matematiskt bevisa, med hjälp av typsystemet, att det inte kommer att uppstå överlappningar i de uppdelade arrayerna. Det finns språk som har liknande operationer. Men min lösning är mer flexibel och skulle kunna läggas in i befintliga programmeringsspråk, säger Beatrice Åkerblom.
AI ersätter mycket av den tråkiga programmeringen
Programmerare är en yrkesgrupp som ofta nämns när man pratar om jobb som AI kan ta över. Det sker redan i dag, menar Åkerblom.
– AI ersätter mycket av den tråkiga programmeringen, det som kallas boilerplate. Men AI kan även skriva mer avancerad kod. En duktig programmerare kan med hjälp av AI göra mer på kortare tid. Hen kan avgöra när det är värt att skriva eller analysera koden själv.
Hon betonar att det finns begränsningar i vad AI kan åstadkomma. Den behöver kombineras med exempelvis statisk programanalys för att vi ska förstå vad det är som AI har skapat.
– Då hamnar vi lite i samma problematik som vi redan har varit inne på, nämligen att den statiska analysen alltid måste vara konservativ och ta höjd för att programmen ska funka. AI klarar inte av att avgöra det automatiskt, säger Beatrice Åkerblom.
Mänsklig intelligens kompletterar AI
AI-modeller som matats med text och redan existerande lösningar kan slänga ihop en algoritm som sorterar innehåll på nolltid. Men det betyder inte att den förstår att det är sortering den håller på med.
– Jag tror att det finns utrymme för mänsklig intelligens. Men vi människor behöver bli bättre på att analysera och skriva den mer komplicerade koden.
Efter disputationen fortsätter Beatrice Åkerblom sitt arbete som ansvarig för Kandidatprogrammet i datavetenskap på DSV. Hon undervisar i programmering, algoritmer, programmeringsspråk och paradigmer.
På forskningsfronten har hon en rad idéer som hon skulle vilja fördjupa sig i.
– Men jag har aktivt bestämt mig för att inte bestämma mig ännu, säger hon.
– Som doktorand har jag empiriskt undersökt hur verkligheten ser ut. Jag har experimenterat, hittat på egna saker och sedan utvärderat dem. Det innebär att jag har rört mig över ett brett fält av olika forskningsmetodiker och angreppssätt.
Variationen och dynamiken har varit det roligaste, tycker Åkerblom.
– Ena sekunden har jag slitit mitt hår för att jag har haft alldeles för mycket data – och inte vetat om min dator kan hantera materialet. I nästa sekund har jag skrivit bevis med matematisk logik. Den spännvidden hade jag inte fått uppleva på annan typ av arbetsplats!
Mer om Beatrice forskning
Beatrice Åkerblom la fram sin avhandling på Institutionen för data- och systemvetenskap (DSV) vid Stockholms universitet 20 mars 2025.
Doktorsavhandlingen har titeln ”On Typability in Programming Languages”.
Läs mer och ladda ner avhandlingen från Diva
Opponent vid disputationen var Christoph Reichenbach från Lunds universitet.
Beatrice Åkerblom har haft två handledare på Uppsala universitet, Elias Castegren och Tobias Wrigstad, och två handledare på DSV: Tony Lindgren och Peter Idestam-Almquist.
Vi har intervjuat henne tidigare:
Svårt men kul att förmedla forskning till ung publik
Programmering är inte bundet till något fysiskt
Text: Åse Karlén
Senast uppdaterad: 12 maj 2025
Sidansvarig: Institutionen för data- och systemvetenskap, DSV