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

Klíčový rozdíl - funkční Programování vs imperativní programování
 

klíčový rozdíl mezi funkčním programováním a imperativním programováním je to funkční programování považuje výpočty za matematické funkce a zabraňuje 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 funkcí. 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ě z hlediska matematické logiky. Další dvě programovací paradigmata 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é výslovně mění stav paměti. Tento článek popisuje rozdíl 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 to 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 tabulkové formě
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 to, že veškerý 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 2 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í se uvažuje o vzorcích. Funkční programovací jazyky Haskell používá metodu níže k nalezení součtu čísel.

Funkce sum má celočíselné hodnoty a výsledkem bude také celé číslo. Lze ji napsat jako součet: [int] -> int. Sumace může být provedena podle následujících vzorců.

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

Pokud existuje seznam čísel, lze jej napsat následovně. N představuje první číslo a ns představuje další čísla

součet (n, ns) = n + součet ns.

Výše uvedené vzorce 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á kromě návratové hodnoty pozorovatelnou interakci s volajícími funkcemi. Funkční programování minimalizuje tyto vedlejší účinky. Změny stavu nezávisí na funkčních vstupech. 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 programovací paradigma, 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 nezbytnými programovacími jazyky. Poskytuje postupný postup, co dělat. Imperativní programovací jazyky obsahují struktury jako kdyby, jindy, 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ě nalézt následovně. V každé iteraci se hodnota i přidá k součtu a přiřadí se k proměnné sum. V každé iteraci hodnota součtu pokračuje v přičítání k dříve vypočítané sumě.

int součet = 0;

pro (int i = 0; i< =10; i++)

sum = suma + i;

Naléhavé programování je snadné se naučit, pochopit a ladit. Je snadné najít stav programu kvůli 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?

Funkční vs. imperativní programování

Funkční programování je programovací paradigma, které považuje výpočet za vyhodnocení matematických funkcí a vyhýbá se změně stavu a proměnlivých dat.. Imperative Programming je programovací paradigma, které používá příkazy, které mění stav programu.
 Struktury
Funkční programování obsahuje funkce volání a funkce vyššího řádu. Imperativní programování obsahuje, pokud, jindy, pro smyčky, funkce, třídy a objekty.
Programovací jazyky
Scala, Haskell a Lisp jsou funkční programovací jazyky. C, C ++, Java jsou nezbytné programovací jazyky.
 Soustředit se
Funkční programování se zaměřuje na konečný výsledek. Program Imperative Programming se zaměřuje na popis fungování programu.
Jednoduchost
Funkční programování je obtížné. Naléhavé programování je snazší.

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ů.

Odkaz:

1. „Imperativní programování“. Wikipedia, Wikimedia Foundation, 28. března 2018. K dispozici zde  
2. „Funkční programování“. Wikipedia, Wikimedia Foundation, 28. března 2018. K dispozici zde  
3.Computerphile. YouTube, YouTube, 30. srpna 2013. K dispozici zde 

Obrázek se svolením:

1.'Haskell Logo'By Haskell1965 - vlastní práce, (CC BY-SA 3.0) přes Commons Wikimedia 
2.'14485179234'by Linux Screenshots (CC BY 2.0) přes Flickr