Sådan blev Danmark en supermagt i programmeringssprog

Hvad er årsagen til, at så mange væsentlige programmeringssprog har danske rødder? Version2 har set på sagen.

At nogle af de bedste og mest succesfulde designere af programmeringssprog kommer fra et land med blot 5,7 millioner indbyggere er noget, vi som danskere bør være stolte af.

Det er nemlig en række danskere, der står bag nogle af de mest udbredte og anvendte programmeringssprog og miljøer i verden: C++, C#, Ruby on Rails, PHP og Typescript.

Foruden de nævnte sprog har danskere været med til at lægge fundamentet for væsentlige sprogkonstruktioner i sprog som Java og Rust, ligesom danskere har været med til at speede eksekveringsplatformen for Javascript væsentligt op.

Iført en dannebrogsflagrende stolthed forsøger Version2 at indkredse, hvad der egentlig er årsagen til den ejendommelige situation, at et lille land har haft så uforholdsmæssigt stor indflydelse på den digitale verdens væsentligste værktøj: programmeringssprog.

Ildsjælen og Regnecentralen

Peter Sestoft, professor på IT-Universitetet i København, forsker selv i programmeringssprog og er ofte blevet spurgt af kollegaer om det danske mysterium.

Programmeringssprog med danske rødder Mange programmeringssprog er udviklet over længere tid, så det kan være svært at tidsfæste det præcise tidspunkt for sprogets fødsel. Undfangelsen af Beta-sproget startede i 1976 med etablering af Beta-projektet og det første udkast til sproget. I 1979 var den første komplette definition af Beta klar, og i 1983 var den første implementering af sproget klar. Tilsvarende startede C# som et internt projekt hos Microsoft i 1999, hvor det en kort overgang blev kaldt COOL (C-like Object Oriented Language) og blev frigivet som kommercielt programmeringssprog i 2002. 1960: Algol60, Peter Naur 1974: Concurrent Pascal, Per Brinch Hansen 1974: COMAL, Benedict Løfsted, Børge R. Christensen 1983: Turbo Pascal, Anders Hejlsberg 1983: C++, Bjarne Stroustrup 1983: Beta, Kristen Nygaard, Bent Bruun Kristensen, Ole Lehrmann Madsen, Birger Møller-Pedersen 1987: Standard ML Modules, Mads Tofte 1994: PHP, dansk-canadieren Rasmus Lerdorf 1995: Delphi, Anders Hejlsberg 2002: C#, Anders Hejlsberg 2003: Ruby on Rails, David Heinemeier Hansson 2011: Dart, Lars Bak, Kasper Lund 2012: Typescript, Anders Hejlsberg 2017: Flutter, Kasper Lund Kilder: Wikipedia, datamuseum.dk, semanticscholar.org, stroustrup.com, ‘Essentials of Standard ML Modules’, ‘The when, why and why not of the BETA programming language’

»Der var en amerikansk kollega, der spurgte, om der var noget særligt i vandet i Danmark, siden der er så mange, der laver noget godt indenfor programmeringssprog,« siger Peter Sestoft.

Det er dog ikke i det danske grundvand, at vi skal finde svaret, men mere i den historiske baggrund for programmeringssprog. I modsætning til en compiler, der skal levere en entydig oversættelse af en sprogkonstruktion, så er forklaringen på den danske succes dog lidt mere tvetydig.

Der er ikke en enkelt årsag, men mere et samspil af omstændigheder. Peter Sestoft sporer dog begyndelsen tilbage til den afdøde datalogi-professor Peter Naur og Regnecentralen.

»Det er svært at sige, præcist hvad der er årsagen, men der er ingen tvivl om, at Peter Naur har haft en væsentlig rolle, i kraft af at han spillede en central rolle i udviklingen af programmeringssproget ALGOL. Vi skal også tilbage til Regnecentralen, der lavede de første danske computere,« siger Peter Sestoft.

Regnecentralen blev stiftet i 1955 med støtte fra Marshallplanen på 900.000 kroner, og det var Regnecentralen, som stod bag de første danske datamaskiner som Gier og DASK.

Peter Naur kom med i en international komité der var i gang med at udvikle programmeringssproget ALGOrithmic Language (ALGOL), der kunne anvendes på forskellige typer datamater, hvilket var banebrydende på det tidspunkt.

Peter Naur kastede sig med ildhu ind i arbejdet med at specificere sproget og blev redaktør for den banebrydende ALGOL60-rapport fra 1960. Efterfølgende udviklede han sammen med Jørn Jensen ALGOL-compilere til de to danske datamater DASK og GIER.

»Regnecentralen spillede en central rolle, da det var det sted i Skandinavien, hvor man først implementerede oversættere. Programmeringssprogsforskning i Skandinavien var stærkt påvirket af København,« siger Peter Sestoft.

ALGOL over Simula til C++ med øl

Det gjaldt eksempelvis nordmændene Ole-Johan Dahl og Kristen Nygaard, der udvidede ALGOL 60 med nye koncepter som klasser, objekter og nedarvning. Med andre ord et objektorienteret sprog.

Nordmændene arbejdede sammen med Aarhus Universitet, hvor manden bag C++, Bjarne Stroustrup, senere studerede datalogi. Her blev han introduceret til Simula, som han syntes var et fantastisk sprog, men Simula-programmerne kørte forfærdeligt langsomt.

Som Stroustrup tidligere har fortalt til Version2’s journalist:

»Klassekonceptet gjorde det muligt for mig at mappe systemkoncepter til sprogkonstruktioner på en direkte måde, der gjorde min kode mere læsbar, end jeg havde set i noget andet sprog. Der var dog en væsentlig begrænsning ved Simula. Performance var en katastrofe.«

Det hjalp også med til den unge Bjarne Stroustrups indsigt i Simula og objektorientering, at Kristen Nygaard var gæsteprofessor på Aarhus Universitet i starten af 1970'erne.

»Han boede i gæstelejligheden på loftet af den gamle datalogibygning i Ny Munkegade. Mit kontor var lige ved trappen, så når Kristen ankom, råbte han til mig, at jeg skulle finde nogle studenter og noget øl. Det gjorde jeg, og så snakkede vi – det vil sige Kristen snakkede, og vi lyttede,« fortalte Bjarne Stroustrup om inspirationen og baggrunden for udviklingen af C++.

Den naurske ånd fra Regnecentralen til universiteterne

Det er ikke kun for udviklingen af C++, at personlige bekendtskaber har haft betydning. En række af Regnecentralens folk kom i løbet af årene ud på de danske universiteter, hvor faget datalogi blev etableret.

Professor Peter Naur i 2008. Illustration: Eriktj/Wikimedia

Peter Sestoft remser en række vigtige personer fra Regnecentralen op i den forbindelse.

Bjarne Svejgaard som blev professor på Aarhus Universitet, Christian Gram blev professor på DTU, Per Brinch Hansen, som først var mange år i USA og derefter kom til Datalogisk Institut på Københavns Universitet, og Søren Lauesen, der har været professor på Københavns Universitet, CBS og IT-Universitetet.

»Mange af de folk så op til Peter Naur, og selvom de ikke alle er compiler-udviklere, så har de medbragt noget af den ånd,« siger Peter Sestoft.

Som ringe i vandet spredte den naurske ånd sig ud til de danske universiteter, og der blev etableret en solid dansk tradition for forskning i programmeringssprog.

En stor bidragsyder til den tradition har været DTU, hvor Dines Bjørner og Hans Bruun har spillet en væsentlig rolle for compiler-teknologi i årevis. De har begge været involveret i formel specifikation og Vienna Development Method (VDM), som blev udviklet sammen med IBM.

»Det har været med til at gøre den slags specifikationssprog til en dansk specialitet,« forklarer Peter Sestoft og nævner, at DTU-arbejdet blandt andet førte til, at den første validerede oversætter for Ada udenfor USA blev lavet i København af ansatte og studerende fra DTU på Dansk Datamatik Center (https://en.wikipedia.org/wiki/Dansk_Datamatik_Center ).

Hejlsberg: Danmark har altid været villig til at investere i uddannelse

Et fyrtårn når det gælder design og implementering af programmeringssprog, er Anders Hejlsberg, der også studerede på DTU. Efterfølgende har han stået bag Poly-Pascal, Turbo-Pascal, Delphi, C# og Typescript.

»Han kommer ikke direkte fra Peter Naur eller DIKUs indflydelsessfære, men han har et fantastisk talent for sprogdesign,« siger Peter Sestoft om den mange-programmeringssprogede dansker.

Hejlsberg har selv tidligere har fremhævet Danmarks uddannelsesniveau og peget på Regnecentralens indflydelse.

»Vi havde vores egen EDB-industri fra starten af. Vores egen kultur omkring det,« har Anders Hejlsberg sagt ifølge denne fortælling hos DR, hvor han videre er citeret for:

»Men måske kan man sammenstille det med, at vi i Danmark altid har været villige til at investere i uddannelse.«

Udbredelsen af teknologi var med fra fødslen af dansk it. Eksempelvis skrev Christian Andersen fra Regnecentralen en lærebog om ALGOL kaldet 'DASK ALGOL for skole og hjem' i 1961.

»Titlen var lidt af en joke, da der på det tidspunkt eksisterede én maskine, og der ikke var nogen mulighed for at programmere ALGOL i hverken skole eller hjem. Men der var allerede på det tidspunkt i Regnecentralen en holdning om, at det her var noget, som skulle udbredes overalt, ikke bare i andre videnskabsgrene, men i befolkningen generelt,« siger Peter Sestoft.

Du kan læse om baggrunden for den bog med Christian Andersens egne ord her.

Beta som inspiration for Java og C

Krydsfertiliseringen af ideer og sprogkonstruktioner fortsatte på Aarhus Universitet, hvor Kristen Nygaard sammen med Bent Bruun Kristensen, Ole Lehrmann Madsen og Birger Møller-Pedersen udviklede sproget Beta.

»Det er ikke et særligt udbredt sprog, men et forskningssprog, der har haft indflydelse på designet af Java og senere hen C#,« forklarer Peter Sestoft.

Den indflydelse kom blandt andet fra en anden dansk sprogdesigner Mads Torgersen som studerede på Aarhus Universitet i 1990'erne, hvor han inspireret af Beta-sproget udviklede Javas generiske typer i form af wildcards.

Ligesom Anders Hejlsberg er Mads Torgersen i dag ansat hos Microsoft, hvor han er programansvarlig for C#-sproget og også deltager i designet af Typescript og Visual Basic.

Det er også værd at nævne det aarhusianske makkerpar Lars Bak og Kasper Lund, som blandt andet stod bag Chromes epokegørende Javascript-engine V8, der formåede at speede javascript-eksekveringen i browsere op.

Makkerparret stod også bag scriptsproget Dart, der dog ikke har formået at få den samme succes som C#, C++, Typescript eller andre programmeringssprog med danske aner. Sproget spiller dog en rolle i Googles Android-miljø Flutter, der har førnævnte Kasper Lund som medskaber.

Vi har programmeringssprog nok

Ser man på nyere sprog som Swift og Rust, havde Version2’s journalist den vildfarelse, at der ikke var nogen dansk indflydelse, men Rust har faktisk en væsentlig dansk indflydelse. Nemlig fra Mads Tofte, der blandt andet er tidligere rektor på ITU.

»Et af de centrale koncepter i Rust kommer fra Mads Tofte. Region inference, som er programanalyse og hukommelsesadministration, udviklede han sammen med Jean-Pierre Talpin,« siger Peter Sestoft og fortsætter:

»Mads Tofte lavede den første implementering i MLKit og så kom Bit-C og Cyclone fra USA. Det er døde projekter i dag, men Rust er inspireret af Cyclone, selv om den præcise mekanisme til hukommelsesadministration er lidt anderledes,« siger Peter Sestoft.

Med hensyn til Swift har Peter Sestoft ikke mange positive ord set fra en sprogdesignmæssig vinkel, og han ser Apples app-udviklingssprog som et eksempel på programmeringssprog, som ikke bidrager med noget nyt.

»Jeg havde nær sagt, at jeg håber, der ikke kommer flere sprog. Der har ikke været meget dybsindig innovation de seneste år. Swift er en overflødig innovation. Apple kunne lige så godt have anvendt C#, hvis det ikke handlede om licenspolitikker og forretningsmodeller,« siger Peter Sestoft.

Han vil dog ikke afvise, at der kan komme programmeringssprog med radikale forbedringer fremover.

»Jeg skal ikke kunne sige, om der kommer nogle radikale forbedringer, men jeg tror, mange skridt er taget med Erlang, Scheme og Haskell. Scala er et godt ægteskab mellem funktionsprogrammering og objektorientering, men til gengæld er Scala vanvittigt komplekst med et afsindig indviklet typesystem,« siger Sestoft og tilføjer:

»Der er man nok nødt til at gå tilbage til ideer om dependent types. Der findes sprog som Agda og Idris, der gør det, men de er ret akademiske. Det stammer fra konstruktiv typeteori, der er en ret teoretisk affære, men der har vi en helt ny slags typesystem, som Scalas og Haskells efterfølgere måske skal baseres på, så det er bestemt ikke sådan, at vi er færdige med sprogudviklingen.«

Mon der vil være danskere involveret i den udvikling?