Voisiko joku vääntää tyhmälle rautalangasta, että mikä noiden kahden ero oikeastaan on? (mielellään jollain ohjelmointiesimerkillä, esim. python-kielellä)
Tiedän, että funktiossa moduuli palauttaa arvon / proseduuri ei, mutta miten nämä sitten käytännössä eroavat toisistaan?
Funktionaalisen ja proseduraalisen moduulin ero?
4
442
Vastaukset
- anomyymi koodari
Proseduraalisessa ohjelmoinnissa jokainen askel muuttaa ohjelman tilaa. Funktionaalisessa ohjelmassa ohjelman tila ei muutu.
- brbbrbrb
Funktio palauttaa samalle syötteelle aina saman paluuarvon. Tuo ei tule koskaan muuttumaan, joten siihen voi luottaa. Ns. imperatiivisissa ohjelmointikielissä, ohjelman tila muuttuu käytännössä joka askeleella, mikä voi sitä kautta aina muuttaa myös minkä tahansa funktion vastetta jollekin syötteelle, jos kyseinen funktio ´vuotaa´tilaa ulkopuolelleen. Tuo vuotaminen johtaa siihen, että funktion merkitys ei välttämättä selviä imperatiivisessa ohjelmoinnissa sen funktion esityksestä vaan seurausten ymmärtämiseksi on ymmärrettävä koko ohjelma, jossa funktio esiintyy. Funktionaalisessa ohjelmoinnissa näin ei ole, koska kielissä tuo vuotaminen on nimenomaan pyritty estämään. Tästä seuraa se etu, että kun funkition kerran määrittelee tekemään asian A jollekin syötteelle B, se tekee sen aina kaikissa yhteyksissä mihin funktion tuo mukaan. Tässä tietysti onnistuminen riippuu sitten, kuinka hyvin on osannut johtaa funktion syömöt tyypit ja paluuarvojen tyypit.
Funktionaalisessa ohjelmoinnissa tyypit ja arvot ovat vaihdannisia siten, että jos tyyppikuvaus on tehty riittävän tarkkaan, ohjelman arvon muuttuminen voidaan johtaa tyypeistä ja päinvastoin. Funktionaalisessa ohjelmoinnissa sitten kytketään eri funktioita toisiinsa ketjuun ja siten niiden kuvaamia muunnoksia suhteessa toisiinsa. Koko tämä ketju muodostaa kuvauksen joltain lähtöarvojen avaruudelta tuloavaruuden arvoille, eikä siinä kuvauksessa puhtaimmillaan ole tippaakaan ohjelman tilaa mukana.
Yksinään funktionaalinen ohjelma ei olisi kovin kiinnostava, koska ilman ohjelman tilaan sotkeutumista, arvojen lähtöarvoja ja tuloarvoja ei voitaisi kommunikoida ohjelmalle. Funktionaalisissa ohjelmissa on siis lisäksi työkaluja, joilla funktionaalisesti puhdas osa (suurin osa) ohjelmaa sitten kytketään tilaa käsitteleviin osiin (input, tiedostot, jne) niin, että se kaunis ja puhdas osa ei mene pilalle. Jos ohjelmassa on vikaa jossain niin se on ohjelmoijan esittämissä abstraktioissa tai sitten siinä, missä funktionaalinen osa kohtaa osan, jossa ympäröivän maailman tila on abstrahoitu tilan sisältävän kuplan sisään. :) Tuo kupla suojelee varsinaista ohjelmaa tilan muuttumisen leviämiseltä kaikkialle kuin tauti, minkä jälkeen seurausten ymmärtäminen eri kohdissa tulisi väistämättä aikaa myöten hankalammaksi ja mahdollisuus bugien ilmenemiseen kasvaa. - vöriisimpöööl
Funktionaalinen ohjelmointi tekee ohjelmoinnille saman, kuin fysiikassa yksiköiden käyttäminen tekee laskuille. Sen sijaan, että laskettaisiin pelkillä luvuilla, kuljetetaan rinnalla mukana yksiköiden laskentaa. Seuraamalla yksiköitä, voidaan laskun tila sisäistää eri kohdissa paremmin ja laskujen lopuksi yksiköstä voidaan tarkistaa, onko se saatu tulos oikeaa muotoa.
- ewqweqwe
Toinen perustuu vähän niin kuin Turingin konstruktioon tai oikeastaan rekisterikoneeseen ja toinen primitiivirekursiivisten funktioiden konstruktioon. Ei sen kummempaa.
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
SDP palauttaa Suomen kansalle kulta-ajat
Hyvinvointivalto on pääosin SDP:n ja osin myös Maalaisliiton rakentama. Hyvinvointivaltion ylläpito edellyttää oikeude15413525Aamun Riikka: työttömyydessä lähestytään viime laman synkintä vaihetta
Nopeasti mentiiin upean Marinin hallituksen ennätystyöllisyydestä toiseen ääripäähän, kohti Suomen historian kurjimpia t749804Älkää vassarit kuvitelko, että Marinin kulta-ajat palaavat
Vaikka demarit voittaisivat seuraavat vaalit, se ei palauta Marinin taskut-täyteen-kelasta-aikaa takaisin, ei voi eikä h999172Suomen velka kasvoi ennätysvauhtia - Mäkynen repostelee
– Velka kasvoi eniten tilaston historiassa, Mäkynen kirjoittaa. – Vuoden 2025 toisella neljänneksellä selvästi eniten k218149Giorgia Meloni vs Riikka Purra
Kyllä Italian pääministeri on kauniimpi ja seksikkäämpi, kuin Suomen valtiovarainministeri Riikka Purra. Mitä jotkut näk406783Johtuuko vasemmistolaisten inho kristinuskoa kohtaan heidän islamin uskostaan?
Tätä jäin pohdiskelemaan.1506195Gallup, PS:lle JÄRISYTTÄVÄ nousu, SDP suurin laskija
https://yle.fi/a/74-20186114 PS kovaa vauhtia nousemassa ennen 2027 vaaleja suurimmaksi puolueeksi. Nyt mennään jo etua684297Ohhoh. Kokoomusvirkamiehen mukaan Suomessa ei ole työttömyyskriisiä
Kun kokoomuksen johtama hallitus epäonnistuu täydellisesti talouspolitiikassaan, niin aikaisemmin erittäin pahaksi määri243415Persut JYTKYTTÄÄ ylös, ohi kepun! +2,1 %
Persut palasi kolmen suurimman joukkoon ja on matkalla kohti kevään 2027 eduskuntavaalivoittoa. Sosialistit ovat syöksy392877En lähde armeijaan enkä siviilipalvelukseen
Maanantaina telkan uutisissa toistamiseen kerrottiin tästä luuserista, joka kärsii muka "masennuksesta", mutta nauraa rä3981285