Hjem
Institutt for informatikk

Programmeringsspråk og sushi

Skal du programmere en datamaskin må du og datamaskinen snakke samme språk. Møt studentene ved UiB som lager sine egne programmeringsspråk.

Hovedinnhold

Programvarespråk er språk man bruker til å kommunisere med og om datamaskiner og programsystemer. Dette inkluderer alt fra programmeringsspråkene Java og Objective C, som brukes til blant annet mobil-apper, og HTML og CSS, som beskriver innhold og layout på web, til det diagrambaserte modelleringsspråket UML som brukes når man skal designe store programsystemer.

Hva bruker man når man skal definere og prosessere programvarespråk? Programvarespråk, selvfølgelig. En språkimplementasjon lærer datamaskinen å kjøre programvare som er skrevet i et nytt språk den ikke kan fra før.

I begynnelsen av desember samlet 14 informatikkstudenter seg til hackathon, en kveld med intens programmering og utvikling – i felleskap, og med pizza, chips og sushi. De tar alle kurset INF225 ved Universitetet i Bergen, og alle jobber med hvert sitt prosjekt; noen lager nye språk, noen implementerer et språk de kjenner fra før, og noen lager nyttige verktøy som kan gjøre det lettere å programmere, eller lettere å forstå programmer som andre har skrevet.

Språkverktøy

Niklas Trippler forteller at han nå endelig klarer å lese programkoden han skrev som 12-åring. «Den gangen var jeg ikke så nøye på at ting skulle være leselig og lett å forstå. Det viktigste var å få mest mulig inn på en linje.» Med kodeformatteringsverktøyet han har laget, kan han nå «pynte» på gammel programkode, slik at man lettere for oversikt og forståelse for hva programmet gjør. Viktige egenskaper når man skal unngå feil og rot. Programkode skrives helst slik man skriver dikt, med strukturen indikert ved hjelp av linjeskift og inntrykk.

Å lage sitt eget språk

Alexander Polden har latt seg fascinere av dataspill. Sammen med medstudent Patrick Monslaup lager han et lite språk for å kontrollere spillkarakterer i fantasyspill. «Se her», sier han entusiastisk, «disse to linjene sier at krigeren min skal angripe fiendens healer, med mindre fiendens kriger truer vår healer – da er det best å gå i forsvar». Spillkontrollspråket er et såkalt domenespesifikt språk – et språk som brukes for å løse en spesifikk type problemer (domenet), i dette tilfellet rollespill på datamaskinen. Utover dette ønsker Polden å få bekreftet eksistensen av det såkalte «Ballmer peak» – en mytisk mental tilstand der en programmør har akkurat den rette kombinasjonen av kreativitet og resonneringsevner til å lage virkelig bra programvare.

Programmeringsspråket Lisp ble laget i 1958, men er fremdeles i aktiv bruk. Paul Grant lager sin egen Lisp – i Lisp. Språket er veldig godt egnet til å bearbeide språk, inkludert både naturlige språk, andre programmeringsspråk og seg selv. Kristoffer Haugsbakk går også tilbake til fortiden, og lager sin egen versjon av Forth, et språk som har vært mye i bruk innen romfart, blant annet om bord på romfergen, og romsonden Cassini som stadig sender oss spennende bilder fra Saturn og dens måner.

Noen har en mer formell tilnærming enn andre. Anna Eilertsen jobber med spesifikasjon av programmeringsspråk. «Det er viktig at alle er enige om nøyaktig hva ting betyr», sier hun, «datamaskiner har en tendens til å tolke ting i verste mening.». Solid basis i matematikk og logikk gir et formelt grunnlag for struktur og mening i programmeringsspråket. «Samtidig er det viktig å teste at ting fungerer i praksis.» Hun definerer et språk ved hjelp av logikkspråket Prolog, som gjør det mulig å kombinere det formelle og det praktiske.

Baste Buanes har prøvd seg frem med forskjellige måter for å implementere programmeringsspråk. Språket Java, som han lærte som begynnerstudent, har han lite til overs for. «Java er det verst tenkelige språket for å implementere andre programmeringsspråk. Å lage programmeringsspråk er en vanskelig oppgave som krever gode verktøy.» Buanes har stor sans for idéen om «bootstrapping»: at ethvert programmeringsspråk bør kunne definere seg selv.

Språk er kommunikasjon

Språk er en form for kommunikasjon, med struktur og mening. Uansett om man kommuniserer med mennesker eller datamaskiner, er det viktig å være enige om hva som blir sagt. Språk for datamaskiner er ikke så helt ulike naturlige språk som norsk og engelsk.  Korrekt grammatikk er viktig, men det mest sentrale er å få forståelse for meningen i språket. Programvarespråk er som regel (kanskje overraskende nok) veldig enkle i forhold til naturlige språk. Flertydigheter og spissfindigheter er det best å unngå.

Sosial programmering

Man trenger ikke sitte alene og være kjedelig om man vil programmere, men det er en krevende aktivitet hvor man ofte må ha mange tanker i hodet samtidig. En hackathon gir mulighet til å samles med likesinnede, og sitte mange timer i strekk og konsentrere seg om et enkelt prosjekt – noe som er ekstra viktig midt i eksamensinnspurten når mange andre prosjekter og aktiviteter legger beslag på oppmerksomheten.

Ordet «hackathon» kommer av engelsk «hack» (i betydningen leken, utforskende og avansert programmering – og ikke i ordets nyere mening relatert til sikkerhetsbrudd), og «marathon». Det sosiale er viktig, og stimulerer til kreativitet – som er helt nødvendig når man skal løse vanskelig problemer. Datafolk er gjerne kjent for usunn mat og drikke – men av programmeringsspråkstudentene er det bare to som foretrekker pizza, resten koser seg med sushi – perfekt hjerneføde for en lang kveld med tenking og problemløsning.