Ključna razlika – Funkcionalno programiranje proti imperativnemu programiranju
Ključna razlika med funkcionalnim programiranjem in imperativnim programiranjem je, da funkcionalno programiranje obravnava izračune kot matematične funkcije in se izogiba spreminjanju stanja in spremenljivim podatkom, medtem ko imperativno programiranje uporablja stavke, ki spreminjajo stanje programa.
Paradigma programiranja zagotavlja slog gradnje strukture in elementov računalniškega programa. Programske paradigme pomagajo razvrstiti programske jezike glede na njihove značilnosti. Programski jezik lahko vpliva na več paradigem. V objektno usmerjeni paradigmi je program strukturiran z uporabo objektov, objekti pa posredujejo sporočila z uporabo metod. Logično programiranje lahko izrazi računanje izključno v smislu matematične logike. Drugi dve paradigmi programiranja sta funkcionalno programiranje in imperativno programiranje. Funkcionalno programiranje omogoča izražanje izračunov kot vrednotenje matematičnih funkcij. Imperativno programiranje nudi stavke, ki eksplicitno spremenijo stanje pomnilnika. Ta članek obravnava razliko med funkcionalnim programiranjem in imperativnim programiranjem.
Kaj je funkcionalno programiranje?
Funkcionalno programiranje temelji na matematiki. Ključno načelo funkcionalnega programiranja je, da se vsi izračuni obravnavajo kot kombinacija ločenih matematičnih funkcij. Matematična funkcija preslika vhode v izhode. Predpostavimo, da obstaja funkcija z imenom f(x)=xx. Vrednost x 1 je preslikana v izhod 1. Vrednost x 2 je preslikana v izhod 4. Vrednost x 3 je preslikana v izhod 9 in tako naprej.
Slika 01: Primer funkcionalnega programskega jezika – Haskell
Pri funkcionalnem programiranju se upoštevajo vzorci. Funkcionalni programski jezik Haskell uporablja spodnjo metodo za iskanje vsote števil.
Funkcija vsote ima celoštevilske vrednosti in tudi rezultat bo celo število. Lahko se zapiše kot vsota: [int] -> int. Seštevanje lahko izvedete tako, da sledite spodnjim vzorcem.
sum[n]=n, vsota enega števila je število samo.
Če obstaja seznam številk, ga lahko zapišemo na naslednji način. n predstavlja prvo število, ns pa druge številke
vsota (n, ns)=n + vsota ns.
Zgornje vzorce je mogoče uporabiti za iskanje vsote treh števil, ki so 3, 4, 5.
3 + vsota [4, 5]
3 + (4 + vsota [5])
3+ 4 + 5=12
Za funkcijo ali izraz velja, da ima stranske učinke, če spremeni neko stanje zunaj svojega obsega ali ima poleg vrnjene vrednosti opazno interakcijo s svojimi klicnimi funkcijami. Funkcionalno programiranje minimizira te stranske učinke. Spremembe stanja niso odvisne od vnosov funkcij. Uporaben je pri razumevanju obnašanja programa. Ena pomanjkljivost funkcionalnega programiranja je, da je učenje funkcionalnega programiranja težje v primerjavi z imperativnim programiranjem.
Kaj je nujno programiranje?
Imperativno programiranje je paradigma programiranja, ki uporablja stavke, ki spreminjajo stanje programa. Osredotoča se na opisovanje delovanja programa. Programski jeziki, kot so Java, C in C, so nujni programski jeziki. Zagotavlja korak za korakom postopek, kaj storiti. Imperativni programski jeziki vsebujejo strukture, kot so if, else, while, for zanke, razrede, objekte in funkcije.
Slika 02: Primer programskega jezika Imperative – Java
Seštevek desetih števil je v Javi mogoče najti na naslednji način. V vsaki ponovitvi se vrednost i doda vsoti in dodeli spremenljivki vsote. V vsaki ponovitvi se vrednost vsote še naprej dodaja predhodno izračunani vsoti.
int vsota=0;
za (int i=0; i<=10; i++) {
vsota=vsota + i;
}
Imperativno programiranje se je enostavno naučiti, razumeti in odpravljati napake. Zaradi uporabe spremenljivk stanja je enostavno najti stanje programa. Nekatere pomanjkljivosti so, da lahko koda postane dolga in lahko tudi zmanjša razširljivost.
Kakšna je podobnost med funkcijskim programiranjem in imperativnim programiranjem?
Tako funkcionalno programiranje kot imperativno programiranje sta paradigmi programiranja
Kakšna je razlika med funkcionalnim programiranjem in imperativnim programiranjem?
Funkcionalno proti imperativnemu programiranju |
|
Funkcionalno programiranje je paradigma programiranja, ki računanje obravnava kot vrednotenje matematičnih funkcij in se izogiba spreminjanju stanja in spremenljivim podatkom. | Imperativno programiranje je paradigma programiranja, ki uporablja stavke, ki spremenijo stanje programa. |
Strukture | |
Funkcijsko programiranje vsebuje klice funkcij in funkcije višjega reda. | Imperativno programiranje vsebuje if, else, while, for zanke, funkcije, razrede in objekte. |
Programski jeziki | |
Scala, Haskell in Lisp so funkcionalni programski jeziki. | C, C++, Java so nujni programski jeziki. |
Fokus | |
Funkcionalno programiranje se osredotoča na končni rezultat. | Imperativno programiranje se osredotoča na opisovanje delovanja programa. |
Enostavnost | |
Funkcionalno programiranje je težko. | Imperativno programiranje je lažje. |
Povzetek – Funkcionalno programiranje proti imperativnemu programiranju
Paradigma programiranja zagotavlja slog gradnje strukture in elementov računalniškega programa. Funkcionalno programiranje in imperativno programiranje sta dva izmed njih. Razlika med funkcionalnim programiranjem in imperativnim programiranjem je v tem, da funkcionalno programiranje obravnava izračune kot matematične funkcije in se izogiba spreminjanju stanja in spremenljivim podatkom, medtem ko imperativno programiranje uporablja stavke, ki spreminjajo stanje programa.