Võtmete erinevus – funktsionaalne programmeerimine vs kohustuslik programmeerimine
Põhiline erinevus funktsionaalse programmeerimise ja kohustusliku programmeerimise vahel seisneb selles, et funktsionaalne programmeerimine käsitleb arvutusi matemaatilisi funktsioonidena ning väldib oleku ja muutuvate andmete muutmist, samas kui kohustuslik programmeerimine kasutab lauseid, mis muudavad programmi olekut.
Programmeerimise paradigma pakub stiili arvutiprogrammi struktuuri ja elementide koostamiseks. Programmeerimisparadigmad aitavad klassifitseerida programmeerimiskeeli nende omaduste põhjal. Programmeerimiskeel võib mõjutada rohkem paradigmasid. Objektorienteeritud paradigmas on programm struktureeritud objektide abil ja objektid edastavad sõnumeid meetodite abil. Loogiline programmeerimine võib väljendada arvutamist eranditult matemaatilise loogika kaudu. Veel kaks programmeerimisparadigmat on funktsionaalne programmeerimine ja kohustuslik programmeerimine. Funktsionaalne programmeerimine võimaldab väljendada arvutusi matemaatiliste funktsioonide hindamisena. Imperatiivne programmeerimine pakub avaldusi, mis muudavad selgesõnaliselt mälu olekut. Selles artiklis käsitletakse erinevust funktsionaalse programmeerimise ja kohustusliku programmeerimise vahel.
Mis on funktsionaalne programmeerimine?
Funktsionaalne programmeerimine põhineb matemaatikal. Funktsionaalse programmeerimise põhiprintsiip on see, et kogu arvutust käsitletakse eraldi matemaatiliste funktsioonide kombinatsioonina. Matemaatiline funktsioon kaardistab sisendid väljunditega. Oletame, et on olemas funktsioon nimega f(x)=xx. X väärtus 1 vastendatakse väljundiga 1. X väärtus 2 vastendatakse väljundiga 4. X väärtus 3 vastendatakse väljundiga 9 ja nii edasi.
Joonis 01: Funktsionaalse programmeerimiskeele näide – Haskell
Funktsionaalses programmeerimises arvestatakse mustreid. Funktsionaalsed programmeerimiskeeled Haskell kasutavad arvude liitmise leidmiseks allolevat meetodit.
Summafunktsioonil on täisarvud ja tulemus on samuti täisarv. Selle saab kirjutada summana: [int] -> int. Summeerimise saab teha allolevaid mustreid järgides.
summa[n]=n, ühe arvu summa on arv ise.
Kui on olemas numbriloend, saab selle kirjutada järgmiselt. N tähistab esimest numbrit ja ns tähistab teisi numbreid
summa (n, ns)=n + summa ns.
Ül altoodud mustreid saab rakendada kolme arvu, mis on 3, 4, 5, liitmise leidmiseks.
3 + summa [4, 5]
3 + (4 + summa [5])
3+ 4 + 5=12
Funktsioonil või avaldisel on kõrvalmõjud, kui see muudab mõnda olekut väljaspool selle ulatust või kui sellel on lisaks tagastatavale väärtusele jälgitav interaktsioon selle kutsuvate funktsioonidega. Funktsionaalne programmeerimine minimeerib selle kõrvalmõju. Olekumuutused ei sõltu funktsiooni sisenditest. See on kasulik programmi käitumise mõistmisel. Üks funktsionaalse programmeerimise puudus on see, et funktsionaalse programmeerimise õppimine on keerulisem võrreldes kohustusliku programmeerimisega.
Mis on kohustuslik programmeerimine?
Imperatiivne programmeerimine on programmeerimisparadigma, mis kasutab lauseid, mis muudavad programmi olekut. See keskendub programmi toimimise kirjeldamisele. Programmeerimiskeeled nagu Java, C ja C on hädavajalikud programmeerimiskeeled. See annab samm-sammult protseduuri, mida teha. Imperatiivsed programmeerimiskeeled sisaldavad struktuure, näiteks if, else, while, tsüklite, klasside, objektide ja funktsioonide jaoks.
Joonis 02: Imperatiivse programmeerimiskeele näide – Java
Kümne arvu liitmise leiate Java-st järgmiselt. Igas iteratsioonis lisatakse i väärtus summale ja omistatakse summa muutujale. Igas iteratsioonis lisandub summa väärtus varem arvutatud summale.
int summa=0;
eest (int i=0; i<=10; i++) {
summa=summa + i;
}
Imperatiivset programmeerimist on lihtne õppida, mõista ja siluda. Programmi olekut on olekumuutujate kasutamise tõttu lihtne leida. Mõned puudused on see, et see võib muuta koodi pikaks ja vähendada skaleeritavust.
Milline on funktsionaalse programmeerimise ja kohustusliku programmeerimise sarnasus?
Nii funktsionaalne programmeerimine kui ka kohustuslik programmeerimine on programmeerimise paradigmad
Mis vahe on funktsionaalsel programmeerimisel ja kohustuslikul programmeerimisel?
Funktsionaalne vs kohustuslik programmeerimine |
|
Funktsionaalne programmeerimine on programmeerimisparadigma, mis käsitleb arvutamist matemaatiliste funktsioonide hindamisena ning väldib oleku ja muutuvate andmete muutumist. | Imperative Programming on programmeerimisparadigma, mis kasutab avaldusi, mis muudavad programmi olekut. |
Struktuurid | |
Funktsionaalne programmeerimine sisaldab funktsioonikutseid ja kõrgemat järku funktsioone. | Imperative Programming sisaldab if, else, while tsüklite, funktsioonide, klasside ja objektide jaoks. |
Programmeerimiskeeled | |
Scala, Haskell ja Lisp on funktsionaalsed programmeerimiskeeled. | C, C++, Java on hädavajalikud programmeerimiskeeled. |
Fookus | |
Funktsionaalne programmeerimine keskendub lõpptulemusele. | Imperative Programming keskendub programmi toimimise kirjeldamisele. |
Lihtsus | |
Funktsionaalne programmeerimine on raske. | Imperatiivne programmeerimine on lihtsam. |
Kokkuvõte – funktsionaalne programmeerimine vs kohustuslik programmeerimine
Programmeerimise paradigma pakub stiili arvutiprogrammi struktuuri ja elementide koostamiseks. Funktsionaalne programmeerimine ja kohustuslik programmeerimine on kaks neist. Funktsionaalse programmeerimise ja kohustusliku programmeerimise erinevus seisneb selles, et funktsionaalne programmeerimine käsitleb arvutusi kui matemaatilisi funktsioone ning väldib oleku ja muudetavate andmete muutmist, samas kui imperatiivne programmeerimine kasutab lauseid, mis muudavad programmi olekut.