Ruotsissa palkataan tutkijoita funktionaaliseen ohjelmointiin liittyvään tutkimukseen ja kehitykseen: Chalmersin yliopisto on tästä tyyppiesimerkki. Intel sponsoroi mielellään Chalmersille funktionaalisen ohjelmoinnin tutkimushankkeita, sillä Intelin kaltaisen yrityksen on hyvä ymmärtää keinot, joiden avulla funktionaalisesta ohjelmoinnista saadaan kaikki hyöty irti. Ruotsalaisille yliopistoilla on pitkä perinne yhteistyöstä brittiläisten Oxfordin ja Cambridgen yliopistojen ja yrityselämän kanssa. Eräs tämänkaltaisen yhteistyön hedelmistä on Kistassa toimiva Functor AB.
Funktionaalisia ominaisuuksia sisältäviä ohjelmointikieliä on nyt moneen lähtöön. Jopa Java-kielessä on funktionaalisia ominaisuuksia Swiftistä ja Kotlinista puhumattakaan. JavaScriptissä on tuettu funktionaalisia ominaisuuksia jo pitkään.
Yliopistot ovat yliopistoja, mutta mikä olisi paras kieli funktionaalisen ohjelmointiparadigman oppimiseksi? Paras kieli oppimisen kannalta on jokin puhtaan funktionaalinen kieli, sellainen, joka pakottaa suunnittelemaan ohjelman funktionaalisista lähtökohdista.
Paras työkalu oppimiseen on Haskell. Joillekin on tullut yllätyksenä, että Microsoft on ollut erittäin isoin panoksin tukemassa Haskell-kielen kehittämistä. Onhan eräs Haskell-kielen vahvimmista tukijoista, Simon Peyton-Jones, töissä Microsoftin tutkimuskeskuksessa, Cambridgessä Englannissa. Microsoftin tuki on ollut ja tulee olemaan hyvä selkänoja Haskellin kehittämiselle myös jatkossa. Kannattaa tutustua Simon Peyton-Jonesin esityksiin Youtubessa, niin pääsee hyvin jyvälle, mitä kaikkea Haskellin ympärillä juuri nyt puuhataan.
Syynä Haskellin pinttyneeseen maineeseen lähinnä akateemisena tutkimuskohteena lienee lähinnä tiedon puute. Ei tiedetä, että kohtuullisin panoksin ohjelmista saadaan paitsi helpommin testattavia myös helpommin ylläpidettäviä. Testauksen merkitystä kyllä korostetaan, mutta juurisyihin liittyvä keskustelu ei oikein vielä lennä. Ruotsissa ja Yhdysvalloissa on kuitenkin yrityksiä, jotka vetoavat nimenomaan ohjelmankoodin laatuun. Näistä hyvä esimerkki on yhdysvaltalainen FP Complete.
Tämä ei kuitenkaan tarkoita, että kaikki koodi olisi nyt muutattava Haskell-kielelle. Tämä tarkoittaa sitä, että Haskell-kielen avulla on helppo erottaa ohjelmointikielten funktionaaliset piirteet muista piirteistä. Haskellia opeteltuaan jääräpäisinkin terrieri oppii erottamaan sivuvaikutuksettoman ohjelman osan sivuvaikutuksia aiheuttavasta ohjelman osasta. Ruotsissa funktionaalinen ohjelmointi näkyy selvästi jo rekryilmoittelussakin: ”We do React and Redux in as functional a style as we can manage while secretly looking towards the Lisps with poorly hidden jealousy. We get all excited about composition and referential transparency…Shared, mutable state makes us sad. ”.
Suomessa muistetaan kyllä toistaa React/Redux -yhdistelmää, mutta hyvin vähän uskalletaan vielä toivoa funktionaaliseen ohjelmointiin liittyvien peruskäsitteiden ymmärrystä: kompositio, sivuvaikutusten välttäminen, tilattomuus ja viittausten läpinäkyvyys hyvin harvoin esiintyvät suomalaisissa rekryilmoituksissa.
Haskell-kielen syntaksin yksinkertaisuus löi ällikällä erään pinttyneen ohjelmoinnin opetukseen peruskoulussa hyvin perehtyneen imperatiivisen ohjelmoinnin puolestapuhujan viikko sitten Pirkanmaan tietojenkäsittely-yhdistyksen Haskell-illassa. Selma-koiran teesit tuntuvat pöllyttävän hyvin pinttyneitäkin asenteita. Ei ole sattumaa, että Microsoftin F# kielessä, F tarkoittaa sanaa fun. Funktionaalinen kieli on se hauskin. Haskellin osalta ei kannattane edes kysyä, mitä H-kirjain kielen alussa merkitsee.
Syksyisin terveisin,
Selma-koira