tirsdag 30. desember 2008 Polyglot
Det er en god stund siden jeg første gang hørte noen hevde at man som utvikler bør lære seg minst ett nytt språk i året. Det sies at man bør gjøre dette for å øke forståelsen for programmering generelt, for å øke mengden verktøy man har tilgjengelig, og til sist for å trimme hjernen - og kanskje riste litt løs på fastgrodde ideer (ikke alle er enige).
Så nå må jeg vurdere om det er på tide at jeg også setter meg ned med ett nytt språk, som en del av min .net ninja plan.
Funksjonelle språk
Den siste tiden har jeg hørt mye om funksjonell programmering (i motsetning til imperativ programmering, som er det vi stort sett driver med). Det er i stor grad det nye språket F# fra Microsoft Research som har gjort communitiet oppmerksom på dette, og nå som det er klart at F# blir en del av .net-rammeverket så er dette ekstra spennende - noe jeg er nødt til å sette meg bedre inn i på ett eller annet tidspunkt.
Men F# er mer enn et rent funksjonelt språk - det er et rikt språk som også støtter objektorientering og andre konsepter som vi er mer eller mindre vandt til. Det hevdes derfor at Haskell er et bedre språk å begynne med om man vil lære seg funksjonell programmering. To gode muligheter på dette området altså.
Dynamiske språk
Dynamiske språk er også spennende, spesielt i forhold til hva som skjer med Dynamic Language Runtime (DLR) i .net, og dynamiske elementer i neste versjon av C#. Men fordi det skjer så mye så er det også litt vanskelig å hoppe på de eksisterende, dynamiske løsningene i .net: IronRuby og IronPython. IronPython virker å ha kommet lengst, men jeg har mest lyst til å se på IronRuby. Jeg begynte nemlig å lære meg Ruby for ca tre år siden, har brukt det litt her og der, men trenger en kraftig oppdatering samt noe fornuftig å bruke det til.
En av hovedfordelene med disse språkene, slik jeg ser det, er at de er mere tilrettelagt for å drive test-dreven (TDD) eller adferds-dreven (BDD) utvikling.
The Dark Side
Hva med Java da? Hadde det vært en ide å friske opp den gamle Javakunnskapen. Ved å styrke den vil jeg for eksempel på et blunk kunne doble mitt potensielle jobbmarked. Men nei, jeg er faktisk mye mer interessert i å fokusere på .net - å bli en ekspert på den teknologien. Det er jo derfor jeg sier .net ninja, ikke sant.
JavaScript derimot er av større interesse. Det språket er jo veldig viktig for meg som webutvikler, og selv om jeg bruker det rett som det er, og har gjort det i nesten 10 år, så er det mye jeg ikke kan. Å bruke tid på JavaScript er nok ikke bortkastet. Men i første omgang skal jeg sette meg inn i noen av de kraftige biblotekene, som jQuery.
Andre språk?
Det har vært mye hype det siste året rundt et språk som heter Boo. Jeg har sett på det, men det frister meg ikke. Lua har også blitt nevnt i en del bisetninger i det siste. Jeg kjenner det rykker litt i programmeringsfingrene når jeg leser om det og tenker på mulighetene for å lage lua-scriptbare løsninger.
Et meget spennende språk gutta i Microsoft Research jobber med et Spec#. Her utvider man C# med konsepter som pre- og post-conditions, invariants og lignende, som tilrettelegger for såkalt design by contract. jeg håper og tror at noen av disse tingene smelter over i C# etterhvert.
Men når alt kommer til alt..
Jeg har veldig lyst til å lære meg nye språk. Jeg har lyst til å være en sånn fyr som kan mange språk. Jeg har alltid hatt denne lysten i bakhodet. Ikke det at jeg ikke bruker eller har brukt mange, ulike språk og teknologier opp igjennom min lille karriære, for det har jeg jo.
Spørsmålet jeg stiller meg nå er om det er riktig på dette tidspunktet å sette igang med et helt nytt språk. Og ganske motvillig kommer jeg frem til at nei, det er ikke riktig for meg akkurat nå. Det er så mye annet jeg må sette meg grundig inn i. C# har fortsatt mange elementer jeg ikke behersker fullt ut - f.eks. lambda. Og så skal jeg satse mere på Silverlight og WPF fremover, og det er ganske krevende greier. Nå kan du jo hevde at XAML er et programmeringspråk jeg holder på å lære meg, så det er da noe..
Men jeg skal ta opp igjen dette spørsmålet om en 4-5 måneder. Kanskje stiller jeg meg anderledes da, og er klar for et funksjonelt språk eller to. Time will tell.