võtme erinevus funktsionaalse ja hädavajaliku programmeerimise vahel on see, et funktsionaalne programmeerimine peab arvutusi matemaatilisteks funktsioonideks ja väldib oleku ja muudetavate andmete muutmist, samas kui hädavajalik programmeerimine kasutab avaldusi, mis muudavad programmi olekut.
Programmeerimisparadigma pakub stiili arvutiprogrammi struktuuri ja elementide ehitamiseks. Programmeerimisparadigmad aitavad programmeerimiskeeli nende omaduste alusel klassifitseerida. Programmeerimiskeel võib mõjutada rohkem paradigmasid. Objektorienteeritud paradigmas on programm üles ehitatud objektide abil ja objektid edastavad sõnumeid meetodite abil. Loogikaline programmeerimine võib väljendada arvutamist üksnes matemaatilise loogika mõttes. Veel kaks programmeerimise paradigmat on funktsionaalne programmeerimine ja hädavajalik programmeerimine. Funktsionaalne programmeerimine võimaldab arvutusi väljendada kui matemaatiliste funktsioonide hindamist. Kohustuslik programmeerimine pakub avaldusi, mis muudavad mälu olekut selgesõnaliselt. Selles artiklis käsitletakse funktsionaalse ja hädavajaliku programmeerimise erinevust.
1. Ülevaade ja peamised erinevused
2. Mis on funktsionaalne programmeerimine?
3. Mis on hädavajalik programmeerimine
4. Funktsionaalse ja imperatiivse programmeerimise sarnasused
5. Kõrvuti võrdlus - funktsionaalne programmeerimine vs kohustuslik programmeerimine tabelina
6. Kokkuvõte
Funktsionaalne programmeerimine põhineb matemaatikal. Funktsionaalse programmeerimise põhiprintsiip on see, et kogu arvutamist käsitletakse eraldi matemaatiliste funktsioonide kombinatsioonina. Matemaatiline funktsioon kaardistab sisendid väljunditeks. Oletame, et on olemas funktsioon nimega f (x) = x * x. X väärtus 1 kaardistatakse väljundiks 1. x väärtus 2 kaardistatakse väljundiks 4. x väärtus 3 kaardistatakse väljundiks 9 ja nii edasi.
Joonis 01: Funktsionaalse programmeerimiskeele näide - Haskell
Funktsionaalses programmeerimises võetakse arvesse mustreid. Funktsionaalsed programmeerimiskeeled Haskell kasutab numbrite liitmise leidmiseks allpool toodud meetodit.
Summafunktsioonil on täisarvud ja tulemus on ka täisarv. Seda saab kirjutada summana: [int] -> int. Summeerimise saab teha järgmiste mustrite järgi.
summa [n] = n, ühe arvu summa on number ise.
Kui on olemas numbriloend, saab selle kirjutada järgmiselt. N tähistab esimest arvu ja ns tähistab teisi numbreid
summa (n, ns) = n + summa ns.
Ülaltoodud mustreid saab kasutada kolme arvu, mis on 3,4,5, liitmiseks.
3 + summa [4,5]
3 + (4 + summa [5])
3+ 4 + 5 = 12
Funktsioonil või avaldisel on väidetavalt kõrvalmõjusid, kui see muudab mõnda olekut väljaspool selle ulatust või kui sellel on tagastatava väärtuse kõrval täheldatav koostoime kutsumisfunktsioonidega. Funktsionaalne programmeerimine minimeerib need kõrvaltoimed. Oleku muutused ei sõltu funktsiooni sisenditest. See on kasulik programmi käitumise mõistmisel. Funktsionaalse programmeerimise üks puudus on see, et funktsionaalse programmeerimise õppimine on hädavajaliku programmeerimisega võrreldes raskem.
Imperatiivne programmeerimine on programmeerimise paradigma, mis kasutab avaldusi, mis muudavad programmi olekut. See keskendub programmi toimimise kirjeldamisele. Programmeerimiskeeled nagu Java, C ja C # on hädavajalikud programmeerimiskeeled. See pakub samm-sammult protseduuri, mida teha. Kohustuslikud programmeerimiskeeled sisaldavad ahelate, klasside, objektide ja funktsioonide struktuure, näiteks kui, muidu, samas.
Joonis 02: Kohustusliku programmeerimiskeele näide - Java
Kümne numbri liitmise leiate Java-st järgmiselt. Igas iteratsioonis liidetakse summa i väärtusega ja omistatakse summa muutujale. Igas iteratsioonis jätkub summa väärtus eelnevalt arvutatud summale.
int summa = 0;
jaoks (int i = 0; i< =10; i++)
summa = summa + i;
Kohustuslikku programmeerimist on lihtne õppida, mõista ja siluda. Oleku muutujate kasutamise tõttu on programmi olekut lihtne leida. Mõned puudused on see, et see võib koodi pikendada ja vähendab ka mastaapsust.
Funktsionaalne vs kohustuslik programmeerimine | |
Funktsionaalne programmeerimine on programmeerimise paradigma, mis arvestab arvutamist matemaatiliste funktsioonide hindamisena ja väldib oleku ja muudetavate andmete muutmist. | Imperatiivne programmeerimine on programmeerimisparadigma, mis kasutab avaldusi, mis muudavad programmi olekut. |
Konstruktsioonid | |
Funktsionaalne programmeerimine sisaldab funktsioonikõnesid ja kõrgema järgu funktsioone. | Imperatiivne programmeerimine sisaldab silmuste, funktsioonide, klasside ja objektide jaoks, kui see veel toimub. |
Programmeerimiskeeled | |
Scala, Haskell ja Lisp on funktsionaalsed programmeerimiskeeled. | C, C ++, Java on hädavajalikud programmeerimiskeeled. |
Fookus | |
Funktsionaalne programmeerimine keskendub lõpptulemusele. | Kohustuslik programmeerimine keskendub programmi toimimise kirjeldamisele. |
Lihtsus | |
Funktsionaalne programmeerimine on raske. | Kohustamatu programmeerimine on lihtsam. |
Programmeerimisparadigma pakub stiili arvutiprogrammi struktuuri ja elementide ehitamiseks. Funktsionaalne programmeerimine ja kohustuslik programmeerimine on neist kaks. Funktsionaalse programmeerimise ja hädavajaliku programmeerimise erinevus seisneb selles, et funktsionaalses programmeerimises peetakse arvutusi matemaatilisteks funktsioonideks ja välditakse oleku ja muudetavate andmete muutmist, samas kui hädavajalik programmeerimine kasutab avaldusi, mis muudavad programmi olekut.
1. “Kohustuslik programmeerimine”. Wikipedia, Wikimedia Foundation, 28. märts 2018. Saadaval siin
2. “Funktsionaalne programmeerimine”. Wikipedia, Wikimedia Foundation, 28. märts 2018. Saadaval siin
3.arvuti. YouTube, YouTube, 30. august 2013. Saadaval siin
1.'Haskell Logo'By Haskell1965 - Oma töö, (CC BY-SA 3.0) Commonsi Wikimedia kaudu
2.'14485179234' Linuxi ekraanipiltide (CC BY 2.0) kaudu Flickr