Deklarativní programování: Porovnání verzí

Smazaný obsah Přidaný obsah
Obrys (diskuse | příspěvky)
→‎Související články: doplnění souvisejících článků
Obrys (diskuse | příspěvky)
členění
Řádek 1:
[[Deklarativní programování]] je založeno na myšlence programování aplikací pomocí definic '''co se má udělat''' a ne '''jak se to má udělat'''. Opakem tohoto principu je [[imperativní jazyky|imperativní programování]] popisující jednotlivé úkony pomocí [[algoritmus|algoritmů]]. Zjednodušeně to lze popsat tak, že imperativní programy obsahují algoritmy, kterými se dosáhne chtěný cíl, zatímco deklarativní jazyky specifikují cíl a algoritmizace je ponechána programu (interpretu) daného jazyka.
 
== Odlišnosti ==
Deklarativní programování se snaží programátora ušetřit vytváření chyb, které běžně vznikají při tvorbě v imperativních jazycích. V imperativních jazycích je běžné mít proměnné globálního charakteru, do kterých zapisují ostatní funkce a metody. Toto je zdrojem mnoha chyb. Deklarativní jazyky se tento problém snaží řešit. Proměnné jsou v nich používány velmi střídmě, protože hodnoty se nejčastěji předávají ve formě návratové hodnoty určité funkce. Deklarativní jazyky také neobsahují prostředky, jak provézt cyklus známý jako do-while nebo for. Vše je řešeno pomocí rekurze.
 
== Přístupy k deklarativnímu programování ==
K deklarativnímu programování lze přistupovat dvojím způsobem. Tím prvním je použití jazyka ze skupin [[programovací jazyk|programovacích jazyků]], které byly navrženy přímo pro deklarativní programování. Jsou to jazyky patřící mezi [[funkcionální programování|funkcionální programovací jazyky]], [[logické programování|logické programovací jazyky]] a [[programovací jazyky s omezujícími podmínkami]]. V těchto jazycích se zpravidla definuje množina funkčních závislostí nebo pravidel. Po spuštění takového programu jsou vyhodnocovány vstupy těmito podmínkami. V programech nebývá důležitá posloupnost jednotlivých pravidel, protože kód nebývá zpracováván lineárně tak, jak tomu bývá u imperativních programovacích jazyků.