ključna razlika Između funkcionalnog i imperativnog programiranja podrazumijeva se da funkcionalno programiranje računa računa kao matematičke funkcije i izbjegava promjenu stanja i promjenjivih podataka dok imperativno programiranje koristi izjave koje mijenjaju stanje programa.
Programska paradigma pruža stil izgradnje strukture i elemenata računalnog programa. Programske paradigme pomažu razvrstati programske jezike na temelju njihovih značajki. Programski jezik može utjecati na više paradigmi. U objektno orijentiranoj paradigmi program se strukturira pomoću objekata, a objekti prosljeđuju poruke koristeći metode. Logičko programiranje može računanje izraziti isključivo matematičkom logikom. Dvije dvije paradigme programiranja su funkcionalno programiranje i imperativ. Funkcionalno programiranje omogućava izražavanje računa kao procjenu matematičkih funkcija. Imperativno programiranje pruža izjave koje izričito mijenjaju stanje memorije. Ovaj članak govori o razlici funkcionalnog programiranja i imperativnog programiranja.
1. Pregled i ključne razlike
2. Što je funkcionalno programiranje
3. Što je imperativno programiranje
4. Sličnosti između funkcionalnog programiranja i imperativnog programiranja
5. Usporedna usporedba - Funkcionalno programiranje vs Imperativno programiranje u tabelarnom obliku
6. Sažetak
Funkcionalno programiranje temelji se na matematici. Ključni princip funkcionalnog programiranja jest da se sve računanje smatra kombinacijom zasebnih matematičkih funkcija. Matematička funkcija mapira ulaze u izlaze. Pretpostavimo da postoji funkcija koja se zove f (x) = x * x. Vrijednost x 1 preslikana je na izlaz 1. x vrijednost 2 mapirana je s izlazom 4. vrijednost x x mapirana je s izlazom 9 i tako dalje.
Slika 01: Primjer funkcionalnog programskog jezika - Haskell
U funkcionalnom programiranju razmatraju se obrasci. Funkcionalni programski jezici Haskell, koristi donju metodu za pronalaženje zbroja brojeva.
Funkcija zbroja ima cjelobrojne vrijednosti, a rezultat će također biti cijeli broj. Može se napisati kao zbroj: [int] -> int. Zbrajanje se može obaviti slijedeći dolje obrasce.
zbroj [n] = n, zbroj jednog broja je sam broj.
Ako postoji popis brojeva, može se napisati na sljedeći način. N predstavlja prvi broj, a ns predstavlja ostale brojeve
suma (n, ns) = n + zbroj ns.
Gornji se obrasci mogu primijeniti kako bi se pronašao zbroj tri broja koji je 3,4,5.
3 + zbroj [4,5]
3 + (4 + zbroj [5])
3+ 4 + 5 = 12
Kaže se da funkcija ili izraz ima nuspojave ako modificira neko stanje izvan njegovog dosega ili ima vidljivu interakciju sa svojim pozivajućim funkcijama osim povratne vrijednosti. Funkcionalnim programiranjem se smanjuju ove nuspojave. Promjene stanja ne ovise o ulazima funkcija. To je korisno pri razumijevanju ponašanja u programu. Jedna je mana funkcionalnog programiranja to što je učenje funkcionalnog programiranja teže u usporedbi s imperativnim programiranjem.
Imperativno programiranje je paradigma programiranja koja koristi izjave koje mijenjaju stanje programa. Usredotočuje se na opisivanje rada programa. Programski jezici kao što su Java, C i C # su imperativni programski jezici. Pruža korak po korak postupak što učiniti. Imperativni programski jezici sadrže strukture poput if, else, while, za petlje, klase, objekte i funkcije.
Slika 02: Primjer imperativnog programskog jezika - Java
Zbroj deset brojeva može se naći na Javi kako slijedi. U svakoj iteraciji i vrijednost se dodaje zbroju i dodjeljuje se varijabli zbroja. U svakoj iteraciji vrijednost zbroja nastavlja sa zbrajanjem prethodno izračunatog zbroja.
int zbroj = 0;
za (int i = 0; i< =10; i++)
suma = zbroj + i;
Imperativno programiranje lako je naučiti, razumjeti i ispraviti pogrešku. Programsko stanje je lako pronaći zbog korištenja varijabli stanja. Neki nedostaci mogu to učiniti kod dugotrajnijim i mogu umanjiti skalabilnost.
Funkcionalno vs imperativno programiranje | |
Funkcionalno programiranje je programska paradigma koja računanje smatra procjenom matematičkih funkcija i izbjegava promjenu stanja i promjenjivih podataka. | Imperativno programiranje je paradigma programiranja koja koristi izjave koje mijenjaju stanje programa. |
strukture | |
Funkcionalno programiranje sadrži pozive funkcija i funkcije višeg reda. | Imperativno programiranje sadrži ako, inače, za, petlje, funkcije, klase i objekte. |
Programski jezici | |
Scala, Haskell i Lisp funkcionalni su programski jezici. | C, C ++, Java su imperativni programski jezici. |
Usredotočenost | |
Funkcijsko programiranje fokusira se na krajnji rezultat. | Imperativno programiranje usredotočeno je na opis načina rada programa. |
Jednostavnost | |
Funkcionalno programiranje je teško. | Imperativno programiranje je lakše. |
Programska paradigma pruža stil izgradnje strukture i elemenata računalnog programa. Funkcionalno i imperativno programiranje su njih dva. Razlika između funkcionalnog i imperativnog programiranja je u tome što funkcionalno programiranje računa računa kao matematičke funkcije i izbjegava promjenu stanja i promjenjivih podataka, dok imperativno programiranje koristi izjave koje mijenjaju stanje programa.
1. "Imperativno programiranje." Wikipedia, Zaklada Wikimedia, 28. ožujka 2018. Dostupno ovdje
2. "Funkcionalno programiranje." Wikipedia, Zaklada Wikimedia, 28. ožujka 2018. Dostupno ovdje
3.Computerphile. YouTube, YouTube, 30. kolovoza 2013. Dostupno ovdje
1.'Haskell Logo'By Haskell1965 - Vlastiti rad, (CC BY-SA 3.0) putem Commons Wikimedia
2.'14485179234 'Linux snimke zaslona (CC BY 2.0) putem Flickr-a