utvikling
Slik ble Danmark en supermakt i programmeringsspråk
Hva er årsaken til at så mange viktige programmeringsspråk har danske røtter? Danske Version2 har sett på saken.
At noen av de beste og mest vellykkede konstruktørene av programmeringsspråk kommer fra et land med bare 5,7 millioner innbyggere, er noe som dansker bør være stolte av.
Det er nemlig en rekke dansker som står bak noen av de mest utbredte og anvendte programmeringsspråkene og miljøene i verden: C++, C#, Ruby on Rails, PHP og Typescript.
Foruten de nevnte språkene har dansker vært med på å legge grunnlaget for vesentlige språkkonstruksjoner i språk som Java og Rust, og dansker har også vært med på å sette vesentlig mer fart på eksekveringsplattformen for JavaScript.
Med svulmende nasjonal stolthet prøver den danske nettavisen Version2 å finne ut hva som egentlig er årsaken til den eiendommelige situasjonen at et lite land har hatt så uforholdsmessig stor innflytelse på den digitale verdens vesentligste verktøy: Programmeringsspråk.
Ildsjelen og Regnecentralen
Peter Sestoft er professor ved IT-Universitetet i København. Han forsker selv på programmeringsspråk, og har ofte blitt spurt av kolleger om det danske mysteriet.
– Det var en amerikansk kollega som spurte om det var noe spesielt i vannet i Danmark, siden det er så mange som gjør så mye bra innen programmeringsspråk, sier Peter Sestoft.
Men det er nok ikke i det danske grunnvannet at vi må finne svaret, men snarere i den historiske bakgrunnen for programmeringsspråk. I motsetning til en kompilator, som skal levere en entydig oversettelse av en språkkonstruksjon, er forklaringen på den danske suksessen litt mer tvetydig.
Der finnes ikke én enkelt årsak, men snarere et samspill av omstendigheter. Peter Sestoft sporer likevel begynnelsen tilbake til den avdøde datavitenskap-professoren Peter Naur og den danske Regnecentralen.
– Det er vanskelig å si nøyaktig hva som er årsaken, men det er ingen tvil om at Peter Naur har hatt en vesentlig rolle i kraft av at han spilte en sentral rolle i utviklingen av programmeringsspråket ALGOL. Vi må også tilbake til Regnecentralen, som lagde de første danske datamaskinene, sier Peter Sestoft.
Regnecentralen ble stiftet i 1955 med en støtte fra Marshallplanen på 900.000 danske kroner, og det var Regnecentralen som sto bak de første danske datamaskinene som Gier og DASK.
Peter Naur ble med i en internasjonal komité som var i ferd med å utvikle programmeringsspråket ALGOrithmic Language (ALGOL), som kunne benyttes på forskjellige typer data-automater, eller datamater, noe som var banebrytende på denne tiden.
Peter Naur kastet seg med full kraft inn i jobben med å spesifisere språket, og han ble redaktør for den banebrytende ALGOL60-rapporten fra 1960. Deretter utviklet han sammen med Jørn Jensen ALGOL-kompilatorer til de to danske datamatene DASK og GIER.
– Regnesentralen spilte en sentral rolle, siden dette var det stedet i Skandinavia hvor man først implementerte oversettere. Forskning på programmeringsspråk i Skandinavia var sterkt påvirket av København, sier Peter Sestoft.
ALGOL via Simula til C++ med øl
Det gjaldt for eksempel nordmennene Ole-Johan Dahl og Kristen Nygaard, som utvidet ALGOL 60 med nye konsepter som klasser, objekter og nedarving. Med andre ord et objektorientert språk.
Nordmennene jobbet sammen med Aarhus Universitet, hvor mannen bak C++, Bjarne Stroustrup, senere studerte datalogi. Her ble han introdusert til Simula, som han syntes var et fantastisk språk, men Simula-programmene kjørte forferdelig langsomt:
Som Stroustrup tidligere har fortalt til Version2s journalist:
«Klassekonseptet gjorde det mulig for meg å mappe systemkonsepter til språkkonstruksjoner på en direkte måte som gjorde koden min mer lesbar enn jeg hadde sett i noe annet språk. Det var likevel en vesentlig begrensning ved Simula. Ytelsen var en katastrofe».
Det var også til hjelp for den unge Bjarne Stroustrups innsikt i Simula og objektorientering, at Kristen Nygaard var gjesteprofessor ved Aarhus Universitet på begynnelsen av 1970-tallet.
«Han bodde i gjesteleiligheten på loftet i den gamle datavitenskapbygningen i Ny Munkegade. Kontoret mitt var rett ved trappa, så når Kristen kom hjem, ropte han til meg at jeg skulle finne noen studenter og litt øl. Det gjorde jeg, og så snakket vi – det vil si at Kristen snakket, og vi lyttet», fortalte Bjarne Stroustrup om inspirasjonen og bakgrunnen for utviklingen av C++.
Den naurske ånden fra Regnecentralen til universitetene
Det er ikke bare for utviklingen av C++ at personlige bekjentskaper har hatt betydning. En rekke av Regnecentralens folk kom i årenes løp ut til de danske universitetene, hvor faget datavitenskap blev etablert.
Peter Sestoft ramser i den forbindelsen opp en rekke viktige personer fra Regnecentralen.
Bjarne Svejgaard, som ble professor på Aarhus Universitet, Christian Gram ble professor på Danmarks Tekniske Universitet (DTU), Per Brinch Hansen, som først var mange år i USA og deretter kom til Datalogisk Institut ved Københavns Universitet, og Søren Lauesen, som har vært professor ved Københavns Universitet, CBS og IT-Universitetet.
– Mange av disse folkene så opp til Peter Naur, og selv om de ikke alle var kompilator-utviklere, har de bragt med seg noe av den ånden, sier Peter Sestoft.
Som ringer i vannet spredte den naurske ånden seg ut til de danske universitetene, og det ble etablert en solid dansk tradisjon for forskning i programmeringsspråk.
En stor bidragsyter til den tradisjonen har vært DTU, hvor Dines Bjørner og Hans Bruun har spilt en vesentlig rolle for kompilator-teknologi i årevis. De har begge vært involverte i formel-spesifikasjon og Vienna Development Method (VDM), som ble utviklet sammen med IBM.
– Dette har vært med på å gjøre denne typen spesifikasjonsspråk til en dansk spesialitet, forklarer Peter Sestoft, og nevner at DTU-arbeidet blant annet førte til at den første validerte oversetteren for Ada utenfor USA, ble lagd i København av ansatte og studenter fra DTU på Dansk Datamatik Center.
Hejlsberg: Danmark har alltid vært villig til å investere i utdannelse
Et fyrtårn når det kommer til design og implementering av programmeringsspråk er Anders Hejlsberg, som også studerte på DTU. Senere har han stått bak Poly-Pascal, Turbo-Pascal, Delphi, C# og Typescript.
– Han kommer ikke direkte fra Peter Naur eller DIKUs innflytelsessfære, men han har et fantastisk talent for språkdesign, sier Peter Sestoft om dansken med de mange programmeringsspråkene.
Hejlsberg har selv tidligere fremhevet Danmarks utdannelsesnivå og pekt på Regnecentralens innflytelse.
«Vi hadde vår egen EDB-industri fra begynnelsen av. Vår egen kultur omkring det», har Anders Hejlsberg sagt ifølge denne fortellingen hos Danmarks Radio, hvor han videre er sitert på følgende:
«Men kanskje kan man sette dette i sammenheng med at vi i Danmark alltid har vært villige til å investere i utdannelse».
Utbredelsen av teknologi var med fra fødselen av dansk it. For eksempel skrev Christian Andersen fra Regnecentralen en lærebok om ALGOL med navnet «DASK ALGOL for skole og hjem» i 1961.
– Tittelen var litt av en spøk, siden det på dette tidspunktet eksisterte én maskin, og at det ikke fantes noen mulighet for å programmere ALGOL i verken skole eller hjem. Men det var allerede den gangen en holdning i Regnecentralen om at dette var noe som skulle spre seg vidt – ikke bare i andre vitenskapsgrener, men i befolkningen generelt, sier Peter Sestoft.
Du kan lese om bakgrunnen for den boka med Christian Andersens egne ord her.
Beta som inspirasjon for Java og C
Kryssbefruktningen av ideer og språkkonstruksjoner fortsatte på Aarhus Universitet, hvor Kristen Nygaard sammen med Bent Bruun Kristensen, Ole Lehrmann Madsen og Birger Møller-Pedersen utviklet språket Beta.
– Det er ikke et spesielt utbredt språk, men et forskningsspråk som har hatt innflytelse på designen av Java og senere C#, forklarer Peter Sestoft.
Den innflytelsen kom blant annet fra en annen dansk språkdesigner, Mads Torgersen, som studerte ved Aarhus Universitet på 1990-tallet, hvor han inspirert av Beta-språket utviklet Javas generiske typer i form av wildcards.
I likhet med Anders Hejlsberg er Mads Torgersen i dag ansatt hos Microsoft, hvor han er programansvarlig for C#-språket, og hvor han også deltar i utviklingen av Typescript og Visual Basic.
Det er også verd å nevne Lars Bak og Kasper Lund; et makkerpar fra Aarhus som blant annet sto bak Chromes epokegjørende Javascript-motor V8, som klarte å få opp farten på javascript-eksekveringen i nettlesere.
Makkerparet sto også bak scriptspråket Dart, som ikke har klart å oppnå den samme suksessen som C#, C++, Typescript eller andre programmeringsspråk med danske aner. Språket spiller likevel en rolle i Googles Android-miljø Flutter, som har tidligere nevnte Kasper Lund som medskaper.
Vi har nok programmeringsspråk
Ser man på nyere språk som Swift og Rust, trodde Version2s journalist feilaktig at det ikke var noen dansk påvirkning, men Rust har faktisk også en vesentlig dansk innflytelse. Nemlig fra Mads Tofte, som blant annet er tidligere rektor ved IT-Universitetet.
– Et av de sentrale konseptene i Rust kommer fra Mads Tofte. Region inference – som er programanalyse og minneadministrasjon – utviklet han sammen med Jean-Pierre Talpin, sier Peter Sestoft:
– Mads Tofte lagde den første implementeringen i MLKit, og deretter kom Bit-C og Cyclone fra USA. Dette er døde prosjekter i dag, men Rust er inspirert av Cyclone, selv om den nøyaktige mekanismen for minneadministrasjon er litt annerledes, sier Peter Sestoft.
Når det gjelder Swift har ikke Peter Sestoft mye positivt å si sett fra en språkdesignmessig vinkel, og han ser på Apples app-utviklingsspråk som et eksempel på programmeringsspråk som ikke bidrar med noe nytt.
– Jeg vil nesten si at jeg håper at det ikke kommer flere språk. Det har ikke vært mye dyptgripende innovasjon de siste årene. Swift er en overflødig innovasjon. Apple kunne like godt ha brukt C#, hvis det ikke handlet om lisenspolitikker og forretningsmodeller, sier Peter Sestoft.
Han vil likevel ikke avvise at det kan komme programmeringsspråk med radikale forbedringer framover.
– Jeg skal ikke si at det kommer noen radikale forbedringer, men jeg tror mange skritt har blitt tatt med Erlang, Scheme og Haskell. Scala er et godt ekteskap mellom funksjons-programmering og objektorientering, men til gjengjeld er Scala vanvittig komplekst med et vanvittig innviklet typesystem, sier Sestoft og legger til:
– Der er man nok nødt til å gå tilbake til ideer om dependent types. Det finnes språk som Agda og Idris som gjør dette, men de er ganske akademiske. Det stammer fra konstruktiv typeteori, som er en ganske teoretisk affære, men der har vi en helt nytt slags typesystem som etterfølgerne til Scala og Haskell kanskje må baseres på, så det er absolutt ikke slik at vi er ferdige med språkutviklingen.
Og kanskje det vil være dansker involvert også i den utviklingen?
Artikkelen er levert av vår samarbeidspartner Version2.dk, en del av Teknologiens Mediehus.