Kuvituskuva

Funktionaalisessa iltapalassa oltiin Haskellin äärellä

27.10.2021 oli Pitkyn asiallisessa etäiltapalassa aiheena funktionaalinen ohjelmointikieli Haskell ja miten sillä tehdään ihan tavallisia ohjelmia. Asiaa vieraili esittelemässä Juuso Vuorinen Ideal Learning oy:stä. Tässä reflektioita sessiosta.

Ihmettelimme aihetta kirjapitosovelluksen kautta, jonka Juuso on kehittänyt oman firmansa tarpeisiin käyttäen  Yesod-kehystä. Eli ihan oikea tuotantosofta, joka korvasi Juuson aiemman Node.js-pohjaisen version. Yesod:n ohella keskeinen palikka systeemissä on käyttöliittymä, joka on tehty funktionaalisella Reactilla.

Tutustumisessa kävi ilmi, että systeemi on softan laadun kannalta kiva. Kehyksen vahvasti tyypitetty tietomalli, joka näkyy eheästi läpi koodin ilman muuttujia (!) pitää koodin robustina ja toteutuksen deklaratiivisena, jolloin ohjelma aika todennäköisesti toimii, jos koodi kääntyy. Mutta se vaatii alkuun vähän vaivaa, sillä Haskell-kääntäjän virheilmoitukset eivät ole kaikkein selkeimpiä, ks. Matias Keverin gradussa on asiaa kääntäjävirheiden tulkinnan vaikeudesta. Tuo on aika yleinen haaste monissa systeemeissä.

Kokonaisuutena Haskell onkin kiva kieli ja kansainväliseltä Haskell-yhteisöltä saa hyvin tukea. Kuitenkin, bisnes-sovelluksissa yleensä suositaan Java-virtuaalikoneen päällä toimivia funktionaalisua kieliä (Scala, Clojure), koska JVM on hiottu, luotettava ja suorituskykyinen alusta. Haskell on kuitenkin kiva funktionaalisen ohjelmoinnin opetteluun ja harrastamiseen, mitkä kummatkin ovat tärkeitä rikkaalle ICT-osaamiskulttuurille, sillä Haskell on asiassaan varsin puhdasoppinen. Me tarvitsemme selkeitä ohjelmointi-ideoiden ymmärtämistä, sillä niillä luodaan pohja muutoskykyiselle ja sopeutuvalle kyvykkyydelle.

Funktionaalisilla kielillä on edelleen se iso haaste, että ne edellyttävät erilaista ajattelutapaa kuin tavalliset imperatiiviset, mm. oliokielet. Siksi niiden oppiminen on hankalaa, jos oppijalla on jo ohjelmointihistoriaa! Funktionaalisten kielten jonkinasteinen oppiminen on joka tapauksessa monille hyödyllistä, sillä niiden ominaisuuksia on viime vuosina tullut lähes kaikkiin tavallisiin ohjelmointikieliin, valmiina hyödynnettäväksi tarpeen mukaan – eli silloin, kun niiden avulla saadaan paremmin toimivaa tai ylläpidettävää ohjelmakoodia. Elämme kielissäkin hybridin aikaa…

Jos Haskell kiinnostaa, paras suomenkielinen, Haskell-johdanto lienee Nykäsen Matin tekemä Johdatus funktionaaliseen ohjelmointiin. Juuso itse teki pari vuotta sitten yksinkertaisemman ja lyhyemmän oppaan Koiramainen ohjelmointikirjanen:

Kiitos Juusolle ja osallistujille mukavasta sessiosta!

Olisi ihan kiva kuulla Pitkyn puitteissa muistakin tavallisista ja erikoisista ympäristöistä, jotka tarjoavat hedelmällisiä näkymiä ICT-kehityksen mahdollisuuksiin.

Teksti: Matti Vuori