Kľúčový rozdiel – funkčné programovanie a imperatívne programovanie
Kľúčový rozdiel medzi funkčným programovaním a imperatívnym programovaním je v tom, že funkčné programovanie považuje výpočty za matematické funkcie a vyhýba sa zmene stavu a meniteľným údajom, zatiaľ čo imperatívne programovanie používa príkazy, ktoré menia stav programov.
Paradigma programovania poskytuje štýl budovania štruktúry a prvkov počítačového programu. Programovacie paradigmy pomáhajú klasifikovať programovacie jazyky na základe ich vlastností. Programovací jazyk môže ovplyvniť viac paradigiem. V objektovo orientovanej paradigme je program štruktúrovaný pomocou objektov a objekty odovzdávajú správy pomocou metód. Logické programovanie môže vyjadrovať výpočty výlučne z hľadiska matematickej logiky. Ďalšie dve programovacie paradigmy sú funkcionálne programovanie a imperatívne programovanie. Funkcionálne programovanie umožňuje vyjadriť výpočty ako vyhodnotenie matematických funkcií. Imperatívne programovanie poskytuje príkazy, ktoré explicitne menia stav pamäte. Tento článok pojednáva o rozdieloch medzi funkčným programovaním a imperatívnym programovaním.
Čo je funkčné programovanie?
Funkčné programovanie je založené na matematike. Kľúčovým princípom funkčného programovania je, že všetky výpočty sa považujú za kombináciu samostatných matematických funkcií. Matematická funkcia mapuje vstupy na výstupy. Predpokladajme, že existuje funkcia s názvom f(x)=xx. Hodnota x 1 sa mapuje na výstup 1. Hodnota x 2 sa mapuje na výstup 4. Hodnota x 3 je namapovaná na výstup 9 a tak ďalej.
Obrázok 01: Príklad funkcionálneho programovacieho jazyka – Haskell
Vo funkčnom programovaní sa berú do úvahy vzory. Funkčné programovacie jazyky Haskell používajú nižšie uvedenú metódu na nájdenie súčtu čísel.
Funkcia súčtu má celočíselné hodnoty a výsledkom bude tiež celé číslo. Dá sa zapísať ako súčet: [int] -> int. Súčet je možné vykonať podľa nasledujúcich vzorov.
sum[n]=n, súčet jedného čísla je samotné číslo.
Ak existuje zoznam čísel, možno ho zapísať nasledovne. n predstavuje prvé číslo a ns predstavuje ostatné čísla
súčet (n, ns)=n + súčet ns.
Vyššie uvedené vzory možno použiť na nájdenie súčtu troch čísel, ktoré sú 3, 4, 5.
3 + súčet [4, 5]
3 + (4 + súčet [5])
3+ 4 + 5=12
O funkcii alebo výraze sa hovorí, že má vedľajšie účinky, ak modifikuje nejaký stav mimo svojho rozsahu alebo má pozorovateľnú interakciu s jej volajúcimi funkciami okrem vrátenej hodnoty. Funkčné programovanie minimalizuje tieto vedľajšie účinky. Zmeny stavu nezávisia od funkčných vstupov. Je to užitočné pri pochopení správania programu. Jednou nevýhodou funkcionálneho programovania je, že učenie sa funkcionálneho programovania je ťažšie v porovnaní s imperatívnym programovaním.
Čo je imperatívne programovanie?
Imperatívne programovanie je paradigma programovania, ktorá používa príkazy, ktoré menia stav programu. Zameriava sa na popis fungovania programu. Programovacie jazyky ako Java, C a C sú nevyhnutné programovacie jazyky. Poskytuje postup krok za krokom, čo robiť. Imperatívne programovacie jazyky obsahujú štruktúry ako if, else, while, pre cykly, triedy, objekty a funkcie.
Obrázok 02: Príklad imperatívneho programovacieho jazyka – Java
Súčet desiatich čísel možno v jazyku Java nájsť nasledovne. V každej iterácii sa hodnota i pripočíta k súčtu a priradí sa k premennej sumy. V každej iterácii sa hodnota súčtu neustále pridáva k predtým vypočítanej sume.
int sum=0;
for (int i=0; i<=10; i++) {
sum=suma + i;
}
Imperatívne programovanie sa dá ľahko naučiť, pochopiť a ladiť. Je ľahké nájsť stav programu vďaka použitiu stavových premenných. Niektoré nevýhody sú, že kód môže byť zdĺhavý a môže tiež minimalizovať škálovateľnosť.
Aká je podobnosť medzi funkčným programovaním a imperatívnym programovaním?
Funkčné programovanie aj imperatívne programovanie sú programovacie paradigmy
Aký je rozdiel medzi funkčným programovaním a imperatívnym programovaním?
Funkčné verzus imperatívne programovanie |
|
Funkčné programovanie je paradigma programovania, ktorá považuje výpočty za vyhodnotenie matematických funkcií a vyhýba sa zmene stavu a meniteľným údajom. | Imperatívne programovanie je paradigma programovania, ktorá používa príkazy, ktoré menia stav programu. |
Štruktúry | |
Funkčné programovanie obsahuje volania funkcií a funkcie vyššieho rádu. | Imperatívne programovanie obsahuje if, else, while, pre cykly, funkcie, triedy a objekty. |
Programovacie jazyky | |
Scala, Haskell a Lisp sú funkčné programovacie jazyky. | C, C++, Java sú nevyhnutné programovacie jazyky. |
Focus | |
Funkčné programovanie sa zameriava na konečný výsledok. | Imperatívne programovanie sa zameriava na popis toho, ako program funguje. |
Jednoduchosť | |
Funkčné programovanie je ťažké. | Imperatívne programovanie je jednoduchšie. |
Zhrnutie – Funkčné programovanie verzus imperatívne programovanie
Paradigma programovania poskytuje štýl budovania štruktúry a prvkov počítačového programu. Funkčné programovanie a imperatívne programovanie sú dve z nich. Rozdiel medzi funkčným programovaním a imperatívnym programovaním je v tom, že funkčné programovanie považuje výpočty za matematické funkcie a vyhýba sa zmene stavu a meniteľným údajom, zatiaľ čo imperatívne programovanie používa príkazy, ktoré menia stav programov.