tirsdag 21. mars 2006 Ruby
"This is your last chance. After this, there is no turning back. You take the blue pill - the story ends, you wake up in your bed and believe that C# is the only way to code. You take the red pill - you stay in Wonderland and I show you how different, simple and interesting code can really be."
Jeg har tatt den røde pillen, og takker Morten Brudvik for tipset. Etter å ha programmert i endel år nå så merker jeg at interessen for selve kodingen har stagnert. Jeg er opptatt av god arkitektur, og det er mange spennende disipliner i .NET verdenen, men jeg merker at jeg har blitt litt sløvet i måten å tenke kode på - the C# way blir litt ensformig i lengden faktisk - og jeg bestemte meg derfor for å utfordre meg selv litt.
Jeg har derfor begynt å lære meg Ruby; ett litt anderledes språk som på nostalgisk vis fører meg tilbake til Universitets-dagene og Unix-livet. På samme måte som C# er det basert på populære språk og erfaringer (i Ruby's tilfelle Ada, Perl, Smalltalk, Python, Lisp m.m.), men forsøker å gå et steg videre og adressere svakhetene i disse språkene. Etterhvert som jeg leser meg opp på Ruby så slår det meg at mange av de unike elementene i Ruby har paralelle elementer i C# som er løsninger på svakheter i C++ og Java.
Filosofien bak Ruby er å gjøre programmereren lykkelig ved å fjerne mengden av "manuelt arbeid" under kodingen, og være minst mulig "overraskende" i sin virkemåte. Det er et objektorientert språk - ALT er objekter - og bruker "dynamic typing", en feature jeg faktisk aldri har sett nytten av før nå. Det som er helt nytt for meg er bruken av kodeblokker som parametre til funksjoner. Se for deg kode hvor du i nesten hvert eneste metodekall sender med et delegat til en funksjon som metodekallet kjører. Det er veldig fjernt fra sånn som vi er vant til å tenke i C-verden, men det er faktisk veldig elegant.
Selv om Ruby er et såkalt skriptspråk, så påstås det at det kan brukes til det meste. NASA bruker det til å kjøre simuleringer, så da må det jo være kult. Ellers brukes det mye til behandling av data, netverks- og systemadministrasjon, web applikasjoner osv. For meg blir det nok aldri noen erstatning for C# og .NET rammeverket, og ikke for mine arbeidsgivere heller. C# er bedre på å strukturere større prosjekter, men som er sekundærspråk for å utføre mindre oppgaver som f.eks. automatisering av repetetive oppgaver eller parsing/transformering av data, så er Ruby ypperlig for meg. 10 linjer i TextPad som det tar 5 minutter å skrive gjør samme jobben som et prosjekt i .NET som det tar en halvtime å opprette, kode og kompilere. For ikke å snakke om hvor lett det er å gjøre endringer.
Men først og fremst får Ruby meg til å tenke.., til å tenke nytt. Kanskje vil dette også inspirere meg til å ta opp igjen arbeidet med neurale nettverk og kunstig intelligens, hvem vet..?! Og så er det jo veldig kult da (på en veldig nerdete måte, jeg vet)!