Ohjelmointikielten kehityksessä on yksi uusi mielenkiintoinen suunta, johon tavallinenkin ohjelmoija on törmäämässä. Kyse on funktionaalisesta ohjelmoinnista (englanniksi functional programming).
Sanon funktionaalista ohjelmointia tässä uudeksi siksi, että ohjelmoijien valtavirran tietoisuuteen tämä ohjelmointimalli on nyt tulossa luullakseni ensimmäistä kertaa Microsoftin F# -kielen muodossa. F# tulee olemaan osa Microsoftin Visual Studio 2010 kehitysympäristöä ja on jo asiasta kiinnostuneille saatavilla erillisenä kokeiluversiona.
Funktionaalisen ohjelmoinnin sanominen uudeksi asiaksi on sikäli toki täysin väärin, että ML -ohjelmointikielen juuret ulottuvat 1970-luvulle, siitä edelleen kehittyneen Caml-kielen ja sen yleisimmän variaation OCaml -kielen syntyhetket ovat 1990-luvun loppupuolella.
F# lainaa periaatteensa vahvasti Caml-perheen kielistä ja yksinkertaiset OCaml-ohjelmien voi odottaa toimivan sellaisenaan F#:ssa.
Funktionaalisten ohjelmointikielten ominaisuuksia ovat yleensä ainakin:
- funktiot, funktioiden välittäminen parametreina ja funktioiden tallentaminen tietorakenteisiin
- vahva staattinen tyypitys
- tyyppien päättely, eli kääntäjä näkee yleensä mitä tietotyyppiä tarkoitetaan ilman, että sitä tarvitsee erikseen kertoa
- pattern matching (suomeksi suunnilleen "mallin sovitus"), joka tietyllä tavalla toteuttaa ehtolausekkeen (eli muiden ohjelmointikielten if-lauseen)
Funktionaalinen ohjelmointi sisältää myös joukon ohjelmointitapoja, eli malleja, joilla ohjelmointiongelmat ratkaistaan. Näitä malleja voi soveltaa myös muissa kielissä, esimerkiksi C# sisältää ominaisuuksia, jotka mahdollistavat funktionaalisten mallien toteuttamisen.
Tähän blogi-kokonaisuuteen tulee jatkossa ilmestymään esimerkkejä OCaml- ja F# -ohjelmista.
Tämä kirjoitus lainaa asiasisältöä kirjasta F# for Scientists, jonka on kirjoittanut Jon Harrop.