Rozdíl mezi funkčním programováním a imperativním programováním

Obsah:

Rozdíl mezi funkčním programováním a imperativním programováním
Rozdíl mezi funkčním programováním a imperativním programováním

Video: Rozdíl mezi funkčním programováním a imperativním programováním

Video: Rozdíl mezi funkčním programováním a imperativním programováním
Video: Chcete být programátor? Raději si to dobře rozmyslete... 2024, Červenec
Anonim

Klíčový rozdíl – Funkční programování a imperativní programování

Klíčový rozdíl mezi funkčním programováním a imperativním programováním je v tom, že funkcionální programování považuje výpočty za matematické funkce a vyhýbá se změně stavu a proměnným datům, 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ýhradně v termínech matematické logiky. Další dvě programovací paradigmata jsou funkcionální programování a imperativní programování. Funkcionální programování umožňuje vyjádřit výpočty 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ílu mezi funkčním programováním a imperativním programováním.

Co je funkční programování?

Funkční programování je založeno na matematice. Klíčovým principem funkcionálního programování je, že všechny výpočty jsou považovány za kombinaci samostatných matematických funkcí. Matematická funkce mapuje vstupy na výstupy. Předpokládejme, že existuje funkce nazvaná f(x)=xx. Hodnota x 1 je mapována na výstup 1. Hodnota x 2 je mapována na výstup 4. Hodnota x 3 je mapována na výstup 9 a tak dále.

Rozdíl mezi funkcionálním programováním a imperativním programováním
Rozdíl mezi funkcionálním programováním a imperativním programováním

Obrázek 01: Příklad funkcionálního programovacího jazyka – Haskell

Ve funkčním programování se berou v úvahu vzory. Funkční programovací jazyky Haskell používají níže uvedenou metodu k nalezení součtu čísel.

Funkce součtu má celočíselné hodnoty a výsledkem bude také celé číslo. Lze jej zapsat jako součet: [int] -> int. Sčítání lze provést podle níže uvedených vzorů.

sum[n]=n, součet jednoho čísla je samotné číslo.

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 modifikuje nějaký stav mimo svůj rozsah nebo má pozorovatelnou interakci s jeho volajícími funkcemi kromě návratové hodnoty. Funkční programování minimalizuje tyto vedlejší účinky. Změny stavu nezávisí na funkčních vstupech. Je to užitečné pro pochopení chování programu. Jednou z nevýhod funkcionálního programování je, že učení se funkcionálnímu programování je těžší ve srovnání s imperativním programováním.

Co je to imperativní programování?

Imperativní programování je programovací paradigma, které používá příkazy, které mění stav programu. Zaměřuje se na popis toho, jak program funguje. 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.

Klíčový rozdíl mezi funkčním programováním a imperativním programováním
Klíčový rozdíl mezi funkčním programováním a imperativním programováním

Obrázek 02: Příklad imperativního programovacího jazyka – Java

Součet deseti čísel lze v Javě nalézt 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 neustále přidává k dříve vypočítanému součtu.

int součet=0;

for (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 díky použití stavových proměnných. Některé nevýhody jsou, ž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?

Jak funkcionální programování, tak imperativní programování jsou programovací paradigmata

Jaký je rozdíl mezi funkčním programováním a imperativním programováním?

Funkční vs imperativní programování

Funkční programování je programovací paradigma, které považuje výpočty za vyhodnocení matematických funkcí a vyhýbá se změně stavu a proměnným datům. Imperativní programování je programovací paradigma, 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.
Focus
Funkční programování se zaměřuje na konečný výsledek. Imperativní programování se zaměřuje na popis toho, jak program funguje.
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 je v tom, že funkční programování považuje výpočty za matematické funkce a vyhýbá se změně stavu a proměnným datům, zatímco imperativní programování používá příkazy, které mění stav programů.

Doporučuje: