søndag 11. desember 2011 Julekalender Polyglot Octave
De fleste språkene jeg presenterer her på bloggen er såkalte "general purpose" språk som kan brukes til hva som helst. Men av og til kan det være greit å kjenne til språk som er skreddersydd for en spesifik oppgave; som for eksempel matematiske beregninger.
Med et slikt verktøy kan man løse enkelte oppgaver mye raskere enn man kan i de "vanlige" språkene. De kan f.eks. egne seg godt til å prototype ulike algoritmer, og brukes blant annet til dette innenfor felt som maskinlæring.
Det finnes mange språk og verktøy å velge blant, men noen av de mest kjente er:
MATLAB (Matrix Laboratory) betegnes som et fjerdegenerasjons programmeringsspråk. I MATLAB kan man manipulere matriser, plotte funksjoner og data i flotte grafer, implementere algoritmer, lage brukergrensesnitt, og bruke moduler skrevet i andre språk som for ekssempel C++ eller Java. Språket brukes mye innenfor utdanning.
Mathematica er en programvare for matematiske beregninger (duh!). Det er mye brukt av vitenskapsfolk, ingeniører og matematikere. Mathematica inkluderer et programmeringsspråk som støtter både den funksjonelle og den objektorienterte paradigmen, har et hav av verktøy for visualisering, datamining, bildeprosessering, og mye annet rart, og koster skjorta og en halv arm!
R er et annet programmeringsspråk og miljø for å utføre statistisk analyse, og for å utvikle programvare for slik analyse. I motsetning til MATLAB og Mathematica er R gratis, og kildekoden er tilgjengelig.
Og så har du GNU Octave, det programmeringsspråket ment for numeriske beregninger som denne artikkelen egentlig handler om. Det er også gratis, og har blitt laget for å være kompatibelt med MATLAB; er man "litt forsiktig" når man koder skripts for Octave, så kan de fint kjøres på MATLAB også.
Denne oppgaven som jeg nå driver og implementerer i ulike språk egner seg selvsagt godt til å løses i GNU Octave. I skjermbildet nedenfor kan du se at jeg har laget et lite skript på fem, seks linjer. Jeg har så kjørt dette fra Octave's kommandolinje, og programmet har skrevet ut svaret (markert med rød ring).
I tillegg har skriptet plottet hvordan summen vokser etterhvert som vi legger til tall opp mot 1000.
Jeg lar bildet og koden tale for seg selv. Jeg er langt fra noen ekspert på verktøy som dette, og måtte "grave litt" i dokumentasjonen for å løse oppgaven.
Jeg skulle derimot ønsket at jeg kunne det bedre, og håper jeg får muligheten til å lære mer. For jeg havner rett som det er i situasjoner hvor jeg skulle ønske at jeg enkelt kunne analysere og visualisere en funksjon eller et datasett, men hvor jeg føler det blir litt for tungvindt med et vanlig programmeringsspråk.
Octave laster du ned fra gnu.org. Der finner du også en svær manual, en wiki med mange tutorials, og mye annet snacks.