Software

Hvad skal vi dog med de funktionelle sprog?

Funktionelle sprog er i vælten. Scala, Erlang og F# er brudt ud af den akademiske verden og vil lære programmørerne et eller andet. Don Syme er primus motor bag Microsofts F#, og her fortæller han, hvorfor vi skal programmere funktionelt.

– Der kan ikke sættes spørgsmål ved fordelene ved funktionelle sprog. Spørgsmålet er derimod, om man kan have funktionelle sprog med statiske sprog og skaleringsevne.

Så kontant lyder udmeldingen fra australske Don Syme, der er hovedmanden bag den seneste tilkommer i .Net-familien, det funktionelle sprog F#, som udtales F-sharp. En klar fordel ved funktionelle sprog er, at der kan udrettes meget mere med færre kodelinjer, siger Don Syme og viser et eksempel med en halv side C#-kode, som kan koges ned til en enkelt F#-sætning, uden at koden bliver kryptisk. Samme argument høres i Java-lejren, hvor Scala er en pendent til F#, ved på samme måde at tilbyde funktionelle og objektorienterede muligheder til programmørerne. Og Don Syme mener at have et sprog, der kan skalere uden problemer, ved at bygge oven på gængse miljøer som .Net.

– Det handler ikke om at bygge nye platforme og genopfinde verden på ny. Det handler om, at vi skal have mere ud af Java- og .Net-platformene, end vi får i dag. Det er det, F# gør på .Net-platformen, ligesom Scala i Java-verdenen.

Don Syme, som har været i Danmark for at fortælle om F#, har ikke noget problem med betegnelsen ”hybrid-sprog”, og han mener, at man skal bruge det sprog, som løser opgaven bedst. De funktionelle dyder, som handler om at undgå tilstande i komponenter, kan ikke bruges til alle opgaver. Et eksempel er grafiske brugerflader, som ifølge Don Syme er én stor tilstandsmaskine. Her kommer det funktionelle paradigme i vejen, og en objektorienteret tilgang er mere naturlig. Men hvis det handler om at analysere komplekse data i business intelligence-systemer eller opbygge de finansielle modeller, der har gjort verden så meget ondt i den seneste tid, så kan de funktionelle ideer noget, som imperative, producerale og objektorienterede sprog har svært ved at klare.

Eksempelvis benytter Microsoft selv F# til at analysere data i firmaets netreklame-system, der er en pendent til Googles Adwords. Banken Credit Suisse i London har 35 eksperter, som bygger finansielle komponenter i F#. Da F# indgår i .Net-familien, kan mere almindelige programmører benytte komponenterne i andre sammenhænge, med mainstream-sprog som C# eller Visual Basic. Selv prototyper til spillemaskine Xbox skabes ofte i F#, fortæller Don Syme, der har en baggrund som forsker i det funktionelle sprog OCaml. De sidste 10 år har han arbejdet i Microsofts engelske forskningsafdeling, hvor han ud over F# har stået for implementeringen af parametriserede typer (generics) i .Net og C#.