Da jeg i 2000 hørte at Microsoft var på vej med et nyt sprog var jeg skeptisk; jeg var lige gået i gang med Java og synes at det var en drøm at arbejde med. Det var allerede en stor mundfuld at skulle lære JVM stakken – hvad skulle vi dog med endnu et sprog? Og der var da også mange ligheder; sprogene lignede hinanden.
Det blev da også C# jeg skulle arbejde med de næste mange år. Dels var det et naturligt valg i de Microsoft-orienterede firmaer jeg arbejde i, dels var det bare nemt at gå til.
Sideløbende med C# har jeg så arbejdet en del med JavaScript på klientsiden i browserne. Og selvom JavaScript til tider har været et meget udskældt sprog så har det været en positiv oplevelse. Og ikke mindst med de nye kompilér-dig-til-en-fremtidig-version-transpilers såsom TypeScript og Babel, så er det en fornøjelse at arbejde med.
JavaScript var oprindeligt kendt for at være et meget langsomt sprog. Men dette ændrede sig da Google med Lars Bak i front lancerede afviklingsmiljøet V8 i 2008 på GOTO (dengang JAOO) Århus.
I første omgang stadig på klient-siden som en del af Chrome-browseren men i 2009 kom Node.js og åbnede for alvor op for muligheden for at benytte JavaScript på server-siden.
Selvom jeg stadig bruger C# på server-siden har jeg dog været ude i flere overvejelser – JavaScript kunne have visse fordele:
Logik kan genbruges fra server til klient. Det kunne fx. være validering af bruger-input hvor man med et fælles sprog kunne flytte logikken direkte.
Typer. Med TypeScript får man et udvidet typesystem i sin JavaScript – det kunne være rart at kunne flytte disse typer uden at skulle skrive definitionerne forfra.
Isomorphic afvikling er en måde at bygge sit website på hvor den samme HTML kan genereres både på serversiden og på klientsiden. Typisk vil første forespørgsel til et site blive renderet på serveren vist som en almindelig webside, efterfølgende forespørgsler vil så blive renderet på klienten hvis denne understøtter JavaScript. Med samme sprog på server og klient gør det det meget nemmere at flytte templates eller HTML-fragmenter.
Open source. Måske sekundært i det daglige arbejde, men noget der smitter af på hele økosystemet og åbner op for at der nemt kan komme flere spillere på markedet. Som fx. Microsoft gjorde det i starten af året, hvor de kom med en reel konkurrent til V8 kaldet Chakra.
Platforme. Hvor C# oprindeligt var forbeholdt Windows så har JavaScript altid været ude på mange platforme. Noget der endda har åbnet op for serverløs afvikling.
Pakker. De fleste miljøer har en pakkemanager der gør det let at dele kode. Selvom det nok er lidt at sammenligne pærer og bananer, så giver antallet af pakker en indikation af det community der er omkring platformen.
Nuget der er C# miljøets pakkemanager har pt. 64K pakker med 70 nye pr. dag og NPM der er JavaScript-miljøets har 332K pakker med 455 nye pr. dag.
Personligt når jeg har ledt efter biblioteker til specifikke behov, har NPM som regel også givet størst gevinst.
Så har C# noget at byde på den dag i dag?
Man må sige at Microsoft virkelig har lagt sig i selen når det gælder open source og antallet af platforme og deres nye udviklingsmiljø Visual Studio Code kører også både på Windows, Mac og Linux. Og hvor sproget aldrig bliver det samme som på klienten, så er det til gengæld ikke underlagt det standardiseringsarbejde der pågår, og det kan hermed udvikle sig frit1.
Mads Torgersen er program-manager for C# sproget og har været med til at drive de nye initiativer. Og senere i dag her på GOTO skal han holde indlægget Why you should take another look at C# – mon ikke C# er klar til at tage kampen op?
1. Der er en ECMA-standard for C# men det ser ikke ud som om at det er noget der fylder meget i udviklingen af sproget.