artikler
Sjefen bak C#: Programmeringsspråk varer ikke evig – du velger selv hvordan du dør
Programmeringsspråk må fornyes for ikke å bli irrelevante. Det mener Microsofts danske språksjef Mads Torgersen – og gir et innblikk i språkutviklingen.
– Det er faktisk noe nesten eksistensielt.
Det sier sjefarkitekten bak C#, Mads Torgersen.
– Programmeringsspråk varer ikke evig. Vi har bare hatt dem i 50–70 år.
Vi møter ham på Øredev-konferansen i Malmö. Foredraget hans handler om hvordan et stort og ikke lenger helt nytt språk kan utvikles slik at det fortsatt er relevant for brukerne.
– Med et programmeringsspråk må man nok velge side: Vi må velge hvordan vi vil dø, sier Torgersen og ler.
– Vil vi bli et legacy-språk som går i glemmeboken med tiden? Men som fortsetter å eksistere og fortsetter å ha mange brukere og en stor kodebase?
Det er én vei å gå. Eller man kan gjøre språket større og større ved å fornye det.
– Og vi kan ikke fjerne noe fra C#. Så derfor er det et stort ansvar: Hver gang du legger inn noe nytt, gjør du overflaten større.
For 18 år siden tok Torgersen over som Microsofts språksjef etter en annen danske, Anders Hejlsberg, som allerede hadde et annet vellykket språk bak seg og senere ble oppfinneren av Typescript.
– Anders pleide å si at alle nye funksjoner starter med minus 100 poeng. Det kan godt hende det er en god funksjon, men den må også bevise at den er så god at den fotjener plass. Så det må man hele tiden være bevisst på.
Et tilfeldig møte
Det var på en konferanse i Aarhus Mads Torgersen og Anders Hejlsberg støtte på hverandre. På den tiden var førstnevnte, som doktorgradsstudent ved Aarhus Universitet, involvert i et prosjekt som senere skulle ende opp med å legge til parametriserte typer – generics – i Java. En annen deltaker i prosjektet var Scala-oppfinner Martin Odersky.
Torgersen var på konferansen for å snakke om prosjektet.
– Og så kom Anders og fortalte om generics i C#. Jeg ble ganske fascinert av måten han snakket om språkdesign på. Den tilnærmingen til filosofien.
Det var nysgjerrighet og mye mindre «stopp-energi».
– Det var mye mindre «ja, men du kan ikke gjøre det fordi...» og mye mer «det kan være interessant – la oss prøve». Det var noe som virkelig tiltalte meg. Og jeg var også på et sted i livet der jeg var klar for noe nytt.
Det var god kjemi mellom de to fra starten.
– Så da han noen uker senere spurte om jeg ville komme på et jobbintervju, var jeg klar.
Fra elfenbenstårnet til virkeligheten
– Jeg hadde mye å lære. Jeg kom fra en forskningsverden der man kan gjøre ting uten kompromisser fordi man ikke har noen brukere. Jeg var ikke så pragmatisk. Jeg tenkte: «Det kunne vi ha gjort, men da burde vi ha gjort det da vi startet».
Det Torgersen måtte lære seg, var å ha en pragmatisk tilnærming til språkutvikling og hvordan programmering ser ut for vanlige utviklere.
– Jeg måtte lære litt mer om hva ekte kode egentlig er, hvordan det ser ut. Jeg kom fra et elfenbenstårn. På godt og vondt har jeg vært mer fascinert av språkene enn av koden. Jeg bruker det så godt jeg kan – som en styrke. Men jeg tror jeg måtte balansere det med en større forståelse for hva folk er vant til. Hva er viktig for dem i hverdagen? Og hva er smerteterskelen for hvor nytt og annerledes noe kan være? Dette var ting som Anders hadde en fantastisk forståelse for.
På denne tiden var ikke produktet åpen kildekode, og man fortalte ikke folk hva man skulle bygge før det var bygget. Men Hejlsbergs instinkter var helt riktige, sier Torgersen.
– Vi fikk veldig lite tilbakemeldinger. Han var god – det var allerede i hodet hans. Han var veldig flink til å gjette riktig.
– Jeg trenger nok mer input utenfra for å kunne trekke de samme konklusjonene. Så det er nok et av de viktigste verktøyene for å oppnå «hitraten» i dag, at vi får mange tilbakemeldinger på alle mulige nivåer gjennom hele prosessen – at det er en åpen prosess. Det er mye lettere å få en følelse av hva som skjer i folkedypet.
Verdens femte største språk
I mange år lå C# langt bak andre språk på popularitetsbarometrene. Men for ni år siden lanserte Microsoft språket som åpen kildekode for Linux – skyens favorittoperativsystem.
I dag ligger C# på femteplass på de fleste barometre.
– Det er et stort ansvar, og det burde skremme vettet av meg. Men det gjør det ikke. Kanskje er det bare fordi jeg har blitt vant til det.
Men det skremte Torgersen i begynnelsen da han tok over etter Hejlsberg.
– Det tok noen år før jeg fikk selvtillit nok til å gjøre det med ro i sjelen.
Hvis du blir for overveldet av ansvaret, ender det med at du blir handlingslammet, mener han.
– Da gjør du ikke ting som er spennende nok, og det blir litt kjedelig.
Men det var heldigvis en pause på et par år da ny kompilator – Roslyn – ble skrevet, i C#, og da ble språkutviklingen satt på vent.
– Nå føler jeg at jeg ikke står alene med mye ansvar. Det er veldig teamorientert. Vi har et flott C#-designteam som møtes fire timer i uken året rundt for å designe C#.
Åpne designmøter
Kjernen i språkutviklingen er et virtuelt team på 10–12 personer, alle personlig invitert av Torgersen. De fleste har en jobb ved siden av, for eksempel i .Net- og kompilatorteamet. Men møtene er åpne for alle i Microsoft.
– Hvis du er interessert, er det bare å møte opp. Og hvis du mener at du har noe å bidra med, er det bare å åpne munnen og si det.
Agendaen sendes ut til 100.000 personer hver gang.
– Så kommer folk av seg selv og bidrar med det de har på hjertet.
Som tidligere nevnt er det grenser for hva man kan gjøre med et modent språk, forteller Torgersen.
– Hvis vi på et eller annet tidspunkt bestemmer oss for ikke å satse mer på C#, vil det fortsatt gå 20 år hvor språket er på topp ti – av ren treghet. Og vi kan ikke fjerne ting fra C#. Så det er derfor det er et stort ansvar: Hver gang du legger til noe nytt, blir det værende. Så det skal man være veldig forsiktig med.
Smale og brede tillegg
Tilleggene til språket skal være så enkle, så syntaktisk smale og så semantisk brede som mulig.
– Vi ønsker å være et språk du har lyst til å velge til ditt neste prosjekt fordi vi er med på de viktige tingene.
Inspirasjon fra funksjonelle språk er, i likhet med mange andre moderne språk, en kilde til innovasjon i C#:
– C# begynte med å være veldig objektorientert. Det er det fortsatt, og det er bra. Men det er mange ting som kan lånes direkte fra funksjonelle språk.
For eksempel funksjonelle konsepter som det finnes gode objektorienterte svar på. Dette er blant kildene Torgersen tror teamet vil fortsette å la seg påvirke av.
Blant fremtidige nyvinninger i språket er det han kaller «extensions», som utvider de mulighetene som allerede finnes med extension methods.
Artikkelen ble først publisert på Version 2 for deres abonnenter. Den er tilgjengelig på norsk for abonnenter av Ekstra gjennom vår samarbeidsavtale.