Funktionaalinen ohjelmointi: Periaatteet, tekniikat ja hyödyt
Kolehmainen, Seppo (2021)
Kolehmainen, Seppo
2021
Tietojenkäsittelytieteiden kandidaattiohjelma - Bachelor's Programme in Computer Sciences
Informaatioteknologian ja viestinnän tiedekunta - Faculty of Information Technology and Communication Sciences
This publication is copyrighted. You may download, display and print it for Your own personal use. Commercial use is prohibited.
Hyväksymispäivämäärä
2021-05-21
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:tuni-202104263589
https://urn.fi/URN:NBN:fi:tuni-202104263589
Tiivistelmä
Perinteisesti ohjelmointia ja sovelluskehitystä on lähestytty imperatiivisen ohjelmointiparadigman kautta. Funktionaalisen ohjelmointiparadigman suosio on kuitenkin alkanut kasvaa, ja siitä etsitään ratkaisuja ongelmiin, joita imperatiivinen paradigma ei ole onnistunut ratkaisemaan. Tässä tutkielmassa tarkastellaan funktionaaliselle ohjelmoinnille tyypillisiä ominaisuuksia ja tekniikoita, sekä tuodaan esille hyötyjä, joita funktionaalisella paradigmalla voidaan saavuttaa.
Tutkielma on muodoltaan kirjallisuuskatsaus. Sen aineisto on koottu hakemalla aiheeseen liittyviä artikkeleita tietojenkäsittelytieteeseen keskittyvistä julkaisutietokannoista. Artikkeleiden valinnassa on painotettu uudempia julkaisuja, mutta mukaan on otettu myös näkökulmaltaan teorialähtöisiä vanhempia artikkeleita.
Funktionaalisen ohjelmoinnin keskiössä on toiminnallisuuden toteuttaminen funktioita määrittelemällä. Funktio on ominaisuuksiltaan tiukasti määritelty ja se muistuttaakin läheisesti diskreetin matematiikan funktiota, joka määritellään usein kuvaukseksi lähtöjoukosta tulosjoukkoon. Funktion sivuvaikutuksella tarkoitetaan sitä, että funktio on parametreistaan johdetun arvon palauttamisen lisäksi vuorovaikutuksessa ympäristönsä kanssa. Funktionaalisessa ohjelmoinnissa lähtökohtana on, etteivät funktiot aiheuta sivuvaikutuksia lainkaan. Ohjelmien toiminnallisuuksien toteuttamiseksi sivuvaikutukset ovat kuitenkin välttämättömiä, joten funktionaaliset ohjelmointikielet sisältävät erilaisia tekniikoita niiden mahdollistamiseksi. Funktionaalisen ohjelmoinnin yksi keskeisimpiä piirteitä kuitenkin on, että sivuvaikutuksia pyritään välttämään ja silloin, kun ne ovat välttämättömiä, ne toteutetaan hallitusti.
Tutkielman aineistosta nousi esille useita merkittäviä hyötyjä, joita funktionaalisella ohjelmointiparadigmalla voi saavuttaa. Funktionaalinen ohjelmakoodi on ilmaisuvoimaista, helposti testattavaa, ja sen sisäisen toimintalogiikan tarkastelu on suoraviivaista. Funktionaalinen ohjelmointi tarjoaa tekniikoita ohjelmakoodin uudelleenkäyttöön, ja sen käytöllä on havaittu olevan yhteys sovelluskehittäjien tuottavuuteen. Myös rinnakkaislaskenta, jonka toteuttamista on perinteisesti pidetty haastavana, pysyy funktionaalisen ohjelmoinnin ominaisuuksien avulla helposti hallittavana.
Tutkielmassa esitetään, että funktionaalisen ohjelmoinnin hyödyt ovat todennäköisesti ainakin osittain seurausta paradigman tavasta käsitellä sivuvaikutuksia. Yhteyttä ei kuitenkaan voida käytettävissä olevan aineiston perusteella täysin osoittaa. Kuitenkin paradigman kiistattomien hyötyjen ansiosta funktionaalisen ohjelmoinnin todetaan olevan varteenotettava vaihtoehto imperatiiviselle paradigmalle.
Tutkielma on muodoltaan kirjallisuuskatsaus. Sen aineisto on koottu hakemalla aiheeseen liittyviä artikkeleita tietojenkäsittelytieteeseen keskittyvistä julkaisutietokannoista. Artikkeleiden valinnassa on painotettu uudempia julkaisuja, mutta mukaan on otettu myös näkökulmaltaan teorialähtöisiä vanhempia artikkeleita.
Funktionaalisen ohjelmoinnin keskiössä on toiminnallisuuden toteuttaminen funktioita määrittelemällä. Funktio on ominaisuuksiltaan tiukasti määritelty ja se muistuttaakin läheisesti diskreetin matematiikan funktiota, joka määritellään usein kuvaukseksi lähtöjoukosta tulosjoukkoon. Funktion sivuvaikutuksella tarkoitetaan sitä, että funktio on parametreistaan johdetun arvon palauttamisen lisäksi vuorovaikutuksessa ympäristönsä kanssa. Funktionaalisessa ohjelmoinnissa lähtökohtana on, etteivät funktiot aiheuta sivuvaikutuksia lainkaan. Ohjelmien toiminnallisuuksien toteuttamiseksi sivuvaikutukset ovat kuitenkin välttämättömiä, joten funktionaaliset ohjelmointikielet sisältävät erilaisia tekniikoita niiden mahdollistamiseksi. Funktionaalisen ohjelmoinnin yksi keskeisimpiä piirteitä kuitenkin on, että sivuvaikutuksia pyritään välttämään ja silloin, kun ne ovat välttämättömiä, ne toteutetaan hallitusti.
Tutkielman aineistosta nousi esille useita merkittäviä hyötyjä, joita funktionaalisella ohjelmointiparadigmalla voi saavuttaa. Funktionaalinen ohjelmakoodi on ilmaisuvoimaista, helposti testattavaa, ja sen sisäisen toimintalogiikan tarkastelu on suoraviivaista. Funktionaalinen ohjelmointi tarjoaa tekniikoita ohjelmakoodin uudelleenkäyttöön, ja sen käytöllä on havaittu olevan yhteys sovelluskehittäjien tuottavuuteen. Myös rinnakkaislaskenta, jonka toteuttamista on perinteisesti pidetty haastavana, pysyy funktionaalisen ohjelmoinnin ominaisuuksien avulla helposti hallittavana.
Tutkielmassa esitetään, että funktionaalisen ohjelmoinnin hyödyt ovat todennäköisesti ainakin osittain seurausta paradigman tavasta käsitellä sivuvaikutuksia. Yhteyttä ei kuitenkaan voida käytettävissä olevan aineiston perusteella täysin osoittaa. Kuitenkin paradigman kiistattomien hyötyjen ansiosta funktionaalisen ohjelmoinnin todetaan olevan varteenotettava vaihtoehto imperatiiviselle paradigmalle.
Kokoelmat
- Kandidaatintutkielmat [7046]