Klíčový rozdíl - funkční programování vs. imperativní programování
Klíčovým rozdílem mezi funkčním programováním a imperativním programováním je, že funkční programování považuje výpočty za matematické funkce a vyhýbá se změně stavu a proměnlivých dat, zatímco imperativní programování používá příkazy, které mění stav programů.
Programovací paradigma poskytuje styl budování struktury a prvků počítačového programu. Programovací paradigmata pomáhají klasifikovat programovací jazyky na základě jejich vlastností. Programovací jazyk může ovlivnit více paradigmat. V objektově orientovaném paradigmatu je program strukturován pomocí objektů a objekty předávají zprávy pomocí metod. Logické programování může vyjádřit výpočet výlučně z hlediska matematické logiky. Dalšími dvěma paradigmaty programování jsou funkční programování a imperativní programování. Funkční programování umožňuje vyjádření výpočtů jako vyhodnocení matematických funkcí. Imperativní programování poskytuje příkazy, které explicitně mění stav paměti. Tento článek pojednává o rozdílech mezi funkčním programováním a imperativním programováním.
OBSAH
1. Přehled a klíčový rozdíl
2. Co je funkční programování
3. Co je imperativní programování
4. Podobnosti mezi funkčním programováním a imperativním programováním
5. Porovnání vedle sebe - funkční programování vs. imperativní programování v tabulce
6. Shrnutí
Co je funkční programování?
Funkční programování je založeno na matematice. Klíčovým principem funkčního programování je, že celý výpočet je považován za kombinaci samostatných matematických funkcí. Matematická funkce mapuje vstupy na výstupy. Předpokládejme, že existuje funkce zvaná f (x) = x * x. Hodnota x 1 je mapována na výstup 1. Hodnota x je mapována na výstup 4. Hodnota x 3 je mapována na výstup 9 atd.
Obrázek 01: Příklad funkčního programovacího jazyka - Haskell
Ve funkčním programování jsou vzaty v úvahu. Funkční programovací jazyky Haskell používají níže uvedenou metodu k nalezení součtu čísel.
Funkce sum má celočíselné hodnoty a výsledkem bude také celé číslo. Může být zapsán jako součet: [int] -> int. Součet lze provést podle následujících vzorů.
součet [n] = n, součet jednoho čísla je číslo samotné.
Pokud existuje seznam čísel, lze jej zapsat následovně. N představuje první číslo a ns představuje další čísla
součet (n, ns) = n + součet ns.
Výše uvedené vzory lze použít k nalezení součtu tří čísel, která jsou 3,4,5.
3 + součet [4,5]
3 + (4 + součet [5])
3+ 4 + 5 = 12
O funkci nebo výrazu se říká, že má vedlejší účinky, pokud upravuje nějaký stav mimo jeho rozsah nebo má kromě návratové hodnoty pozorovatelnou interakci s jeho volajícími funkcemi. Funkční programování tyto vedlejší účinky minimalizuje. Změny stavu nezávisí na vstupech funkcí. Je to užitečné při porozumění chování programu. Jednou z nevýhod funkčního programování je, že učení funkčního programování je těžší ve srovnání s imperativním programováním.
Co je to imperativní programování?
Imperativní programování je paradigma programování, které používá příkazy, které mění stav programu. Zaměřuje se na popis fungování programu. Programovací jazyky jako Java, C a C # jsou imperativní programovací jazyky. Poskytuje postup krok za krokem, co dělat. Imperativní programovací jazyky obsahují struktury jako if, else, while, pro smyčky, třídy, objekty a funkce.
Obrázek 02: Příklad imperativního programovacího jazyka - Java
Součet deseti čísel lze v Javě najít následovně. V každé iteraci je hodnota i přidána k součtu a přiřazena k proměnné součtu. V každé iteraci se hodnota součtu stále přidává k dříve vypočtenému součtu.
int součet = 0;
pro (int i = 0; i <= 10; i ++) {
součet = součet + i;
}
Imperativní programování je snadné se naučit, pochopit a ladit. Je snadné najít stav programu z důvodu použití stavových proměnných. Některé nevýhody spočívají v tom, že kód může být zdlouhavý a může také minimalizovat škálovatelnost.
Jaká je podobnost mezi funkčním programováním a imperativním programováním?
Funkční programování i imperativní programování jsou programovací paradigmata
Jaký je rozdíl mezi funkčním programováním a imperativním programováním?
Rozdílný článek uprostřed před tabulkou
Funkční vs imperativní programování |
|
Funkční programování je paradigma programování, které považuje výpočet za vyhodnocení matematických funkcí a vyhýbá se změně stavu a proměnlivých dat. | Imperativní programování je paradigma programování, které používá příkazy, které mění stav programu. |
Struktury | |
Funkční programování obsahuje volání funkcí a funkce vyššího řádu. | Imperativní programování obsahuje if, else, while, pro smyčky, funkce, třídy a objekty. |
Programovací jazyky | |
Scala, Haskell a Lisp jsou funkční programovací jazyky. | C, C ++, Java jsou imperativní programovací jazyky. |
Soustředit se | |
Funkční programování se zaměřuje na konečný výsledek. | Imperativní programování se zaměřuje na popis fungování programu. |
Jednoduchost | |
Funkční programování je těžké. | Imperativní programování je jednodušší. |
Shrnutí - Funkční programování vs. imperativní programování
Programovací paradigma poskytuje styl budování struktury a prvků počítačového programu. Funkční programování a imperativní programování jsou dva z nich. Rozdíl mezi funkčním programováním a imperativním programováním spočívá v tom, že funkční programování považuje výpočty za matematické funkce a vyhýbá se změně stavu a proměnlivých dat, zatímco imperativní programování používá příkazy, které mění stav programů.