Hvilket dynamiske programmeringspråk du skal lære deg


fredag 5. mars 2010 Polyglot

Sett at jeg har overtalt deg til å lære dynamisk programmering, f.eks. da du leste artikkelen om at du MÅ beherkse et dynamisk språk. Spørsmålet du stiller deg da er: Hvilket språk skal jeg velge? Og jeg hjelper deg gjerne med det også.

Her finner du en oversikt over det som i dag er de mest populære, dynamiske programmeringsspråkene, sammen med mine meninger om hvilke egenskaper de har, og hvorfor du eventuelt skal velge dem. De er sortert etter popularitet – de mest omtalte og brukte språkene er på toppen av listen. Ta gjerne en titt på blogposten om trender innen programmeringsspråk i 2010 om du vil se nærmere på rangeringen.

PHP

php_logo PHP er for tiden på tredjeplass i TIOBE's liste over populære programmeringsspråk. Men for guds skyld – ikke velg PHP til å lære deg dynamisk programmering! Det du gjør i PHP kan du få til i språk som Python og Ruby om du vil, men det fungerer ikke den andre veien. Har du behov for å utvikle i PHP så lærer du deg det i tillegg, men ikke som en erstatning for en orntlig språk. Det er med på denne listen for kompletthets skyld, og kun det.

Mulig jeg ikke vet hva jeg snakker om, men la oss uansett gå raskt gå videre…

Python

python_logo Python er et programmeringsspråk som så verdens lys sent på 80-tallet. Python-kode er svært konsis, legger vekt på lesbarhet, og har en syntaks som appellerer til mange utviklere. Det er et objektorientert språk, men støtter også det funksjonsbasert paradigmen. I motsetning til de fleste andre språk legger python betydning i innrykk – man bruker indentering for å angi blokker/programstruktur, og behøver derfor ikke avslutte klasser, metoder osv med "end" eller krøllparantes eller lignende.

Her er en Hello World-klasse i Python, og bruken av den for å skrive ut "Hello, T-Man". Den kompakte stilen er herlig!

    1 class Greeter:
    2   def hello(self, name):
    3     print 'Hello,', name
    4
    5 g = Greeter()
    6 g.hello('T-Man')

I tillegg til den vanlige implementasjonen i C, finnes Python også på .Net-plattformen i form av IronPython og på Java-plattformen i form av Jython. Om man behersker Python kan man dermed utnytte dynamisk programmering der også, noe som bør appelere til eksisterende .Net eller Java-utviklere.

Dessuten er Python det primære språket på Google App Engine, så hvis du vil utnytte den plattformen kan det være et lurt valg (selv om App Engine nå også støtter Java-plattformen, inkludert alle språkene som kjører der). Python er mye brukt til webutvikling generelt, og det mest populære rammeverket for denslags ser ut til å være djangoThe Web framework for perfectionists with deadlines.

Vil du vite mer om Python tar du turen til python.org.

Perl

perl_logoDa Perl dukket opp i 1987 var det som et skriptspråk for UNIX, og det er kjent for å ha en spesiell styrke når det kommer til prosessering av tekst. Språket har siden utviklet seg en god del, og har influert en rekke andre språk, som f.eks. Python og Ruby. Perl kalles "the Swiss Army chainsaw of programming languages".

Jeg våger meg ikke på noe eksempel-kode, da jeg aldri har kodet en linje Perl i hele mitt liv. Min oppfatning er at Perl er litt utdatert, men om du har lyst til å ta en titt vil du finne det du trenger på perl.org.

JavaScript

Vi har alle brukt det, om ikke mer så har de fleste av oss i alle fall klippet og limt snutter fra nettet. Men JavaScript er faktisk et spennende, dynamisk språk som brukes til mer enn bare klientside-funksjonalitet i websider. Det finnes en rekke avarter som f.eks. ActionScript i Adobe Flash, JScript på Microsoft-plattformen m.m. Man kan bruke JavaScript som skriptspråk i OpenOffice, og med verktøy som Titanium fra appcelerator kan man lage desktop og mobil-klienter vha HTML, CSS og JavaScript. Men først og fremst er det et språk for å lage dynamiske websider, og det har tatt av på nytt de siste årene nå som browserene begynner å bli bedre og mere kompatible med hverandre.

Det er derimot et litt rotete språk, og derfor ikke noe jeg ville ha valgt for å lære meg dynamisk programmering. Om du er av en annen mening bør du skaffe deg boken JavaScript: The Good Parts og lære det orntlig.

Ruby

ruby_logo Ruby er det språket som har arvet mest fra legendariske Smalltalk, og hevder å være det mest objektorienterte språket man har i dag. Det ble utviklet midt på 90-tallet av Yukihiro "Matz" Matsumoto, og er det programmeringsspråket jeg valgte for å lære meg dynamisk programmering. Matz ville lage et språk uten overraskelser, som skulle være en fornøyelse å bruke – fokuset er flyttet bort fra å programmere for maskinen, og mot å programmere for mennesker.

Ruby on Rails, et rammeverk for høy-effektiv webutvikling, er sansynligvis det som har gjort Ruby så populært som det er i dag, men det finnes et hav av andre verktøy og biblioteker også. Ruby-syntaksen egner seg dessuten godt til å lage domenespesifike språk som kan la seg forstå av mindre tekniske personer, og brukes derfor ofte til embedding.

"Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration."

Du har sansynligvis allerede sett endel ruby-kode på denne bloggen, men her er et lite eksempel til. Her demonstreres bl.a. at man ikke behøver å deklarere instansvariabler (@name) – det er bare til å begynne å bruke dem, og anta at de er der når man trenger dem.

    1 class Greeter
    2   def initialize(name)
    3     @name = name.capitalize
    4   end 
    5   def salute
    6     puts "Hello #{@name}!"
    7   end
    8 end
    9  
   10 g = Greeter.new("world")
   11 g.salute # Output "Hello World!"

Som Python finnes også Ruby på både .NET-plattformen (i form av IronRuby) og på Java-runtimen (JRuby) i tillegg til den "vanlig" implementasjonen i C.

Er du interessert i Ruby kan du begynne på ruby-lang.org.

Objective-C

Objective-C er en slags blanding av C og Smalltalk, dvs. hardcore, low-level kombinert med elegant og dynamisk objektorientering. Språket har fått sin renessanse på grunn av at det er det primære programmeringsspråket for Apple's Mac OS X og iPhone OS. Hvis det er din greie kan det sikkert være et spennende språk, selv om mange sier det er litt gammeldags og tungt å jobbe med. Selv synes jeg det ser litt gresk ut :-/

Jeg finner ikke noen kanonisk skilde til Objective-C, men Mac OS X Reference Library har en brukbar introduksjon.

Lua

lua_logo Lua er et lettvekts, prototype-basert språk som er designet for å være utvidbart. Som JavaScript er mye av inspirasjonen hentet fra Scheme – JavaScript og Lua har derfor mye til felles, selv om syntaksen er ganske anderledes.

Lua har blitt populært fordi det har blitt embeddet som skriptspråk i World of Warcraft og mange andre spill. Hvis du er en gamer kan dette selvsagt være inspirerende, men også om du ønsker å lage programvare som skal være utvidbar og derfor skal hoste sin egen skripting-motor. Lua har god performance, og lar seg bl.a. lett integrere med C++.

Igjen har jeg ingen erfaring med dette programmeringsspråket, og skal ikke prøve meg på no eksempel. For mer info om Lua kan du gå til lua.org.

Groovy

groovy_logoGroovy er et objektorientert, dynamisk språk du finner på Java-plattformen. Version 1.0 ble lansert så sent som i 2007, og det har ikke fått så veldig stor markedsandel enda (plass #40 på TIOBE's liste). Inspirasjonen er hentet fra Java, Python, Ruby og lignende språk. Blant annet er Java-kode ofte også gyldig groovy-kode (ifølge wikipedia), og man kan bruke alle eksisterende Java-biblioteker i Groovy.

Her er litt kode:

    1 class Greeter {
    2   def name
    3   Greet(who) {
    4     name = who[0].toUpperCase() + who[1..-1]
    5   }
    6   def salute() {
    7     println "Hello $name!"
    8   }
    9 }
   10
   11 g = new Greeter('world')
   12 g.salute()   // Outout "Hello World!"

Her demonstreres bl.a. Ruby/Python-style ranges (slutten av linje 4), dynamisk evaluering av streng mot variablenavn (såkalt interpolering - linje 7) og fullstendig fravær av type-deklarering.

Er du glad i Java-plattformen og vil lære dynamisk programmering kan du ta en titt på groovy.codehaus.org.

Jeg håper og regner med du fant noe som appelerte her. Lykke til med valget!


comments powered by Disqus