Funktionaalisen ohjelmoinnin edut : Case: Mairion
Jokela, Ville (2018)
Jokela, Ville
Jyväskylän ammattikorkeakoulu
2018
All rights reserved
Julkaisun pysyvä osoite on
https://urn.fi/URN:NBN:fi:amk-2018060111935
https://urn.fi/URN:NBN:fi:amk-2018060111935
Tiivistelmä
Tavoitteena oli selvittää, mitä etuja funktionaalisella ohjelmoinnilla väitetään olevan ja miten nämä edut tulevat ilmi käytännön projektissa. Kyseisenä käytännön projektina toteutettiin REST-rajapinta tehtävien- ja ajanhallintapalvelulle käyttäen funktionaalisen ohjelmoinnin tekniikoita.
Valittiin funktionaalisen ohjelmoinnin väitetyistä eduista tutkittavaksi sopivat: koodin tiiviys, rinnakkais-suoritukseen soveltuvuus ja abstraktiotaso.
REST-rajapinta toteutettiin Scala-ohjelmointikielellä, käyttäen http4s, doobie ja Circe kirjastoja. Ajan puutteen vuoksi toteutus ei täyttänyt kaikkia ohjelmistolle asetettuja vaatimuksia, mutta sitä pystyi silti käyttämään etujen arvioimiseen.
Etujen esiintymistä tutkittiin vertaamalla toteutettua ohjelmistoa opinnäytetyön tekijän aiemmin toteutettuun samankaltaiseen ohjelmistoon, joka oli toteutettu Javaohjelmointikielellä ja käytti Spring MVC sekä JPA kirjastoja.
Tiiviyttä ei voitu arvioida koska Scala-toteutus erosi Java-toteutuksesta liikaa. Scalatoteutus arvioitiin hieman Java-toteutusta soveliaammaksi rinnakkais-suoritukseen. Scalatoteutus todettiin huomattavasti korkeammalla abstraktiotasolla ohjelmoiduksi.
Abstraktiotason tuloksesta kuitenkin kyseenalaistettiin, että johtuiko se funktionaalisesta ohjelmoinnista. Tuloksista vedettiin johtopäätös, että ohjelmointiparadigman etujen havaitseminen yksittäisessä projektissa on hankalaa ja eri ohjelmointiparadigmoilla toteutettuja ohjelmistoja on hankala verrata.
Valittiin funktionaalisen ohjelmoinnin väitetyistä eduista tutkittavaksi sopivat: koodin tiiviys, rinnakkais-suoritukseen soveltuvuus ja abstraktiotaso.
REST-rajapinta toteutettiin Scala-ohjelmointikielellä, käyttäen http4s, doobie ja Circe kirjastoja. Ajan puutteen vuoksi toteutus ei täyttänyt kaikkia ohjelmistolle asetettuja vaatimuksia, mutta sitä pystyi silti käyttämään etujen arvioimiseen.
Etujen esiintymistä tutkittiin vertaamalla toteutettua ohjelmistoa opinnäytetyön tekijän aiemmin toteutettuun samankaltaiseen ohjelmistoon, joka oli toteutettu Javaohjelmointikielellä ja käytti Spring MVC sekä JPA kirjastoja.
Tiiviyttä ei voitu arvioida koska Scala-toteutus erosi Java-toteutuksesta liikaa. Scalatoteutus arvioitiin hieman Java-toteutusta soveliaammaksi rinnakkais-suoritukseen. Scalatoteutus todettiin huomattavasti korkeammalla abstraktiotasolla ohjelmoiduksi.
Abstraktiotason tuloksesta kuitenkin kyseenalaistettiin, että johtuiko se funktionaalisesta ohjelmoinnista. Tuloksista vedettiin johtopäätös, että ohjelmointiparadigman etujen havaitseminen yksittäisessä projektissa on hankalaa ja eri ohjelmointiparadigmoilla toteutettuja ohjelmistoja on hankala verrata.
