138 738
editací
m (linkfix) |
|||
{{Programovací paradigmata}}
'''Programovací [[
== Přehled ==
[[Programovací jazyk]] může podporovat [[Multiparadigmatický programovací jazyk|vícero paradigmat]]. Například programy psané v jazyce [[C++]] nebo [[Object Pascal]] mohou být čistě [[Procedurální programování|procedurální]], čistě [[Objektově orientované programování|objektové]] nebo kombinace obou paradigmat. Vývojáři pak mají možnost se rozhodnout, jak a které prvky paradigmat použijí.
V objektově orientovaném programování lze program vidět jako soubor navzájem propojených objektů, zatímco ve [[Funkcionální programování|funkcionálním programování]] je programem sled vyhodnocení bezstavových funkcí. V systémech s více procesory nalezne uplatnění [[
Stejně jako různé skupiny [[Softwarové inženýrství|softwarových inženýrů]] prosazují různé metodiky, různé [[Programovací jazyk|programovací jazyky]] představují různá programovací paradigmata. Některé jazyky jsou navrženy tak, aby umožňovaly použití jediného programovacího paradigmatu ([[Smalltalk]] je čistě objektově orientovaný, [[Haskell (programovací jazyk)|Haskell]] je čistě funkcionální), zatímco jiné jazyky podporují více paradigmat (např. [[Object Pascal]], [[Scala_(programovací_jazyk)|Scala]], [[C++]], [[Java (programovací jazyk)|Java]], [[C#]], [[Visual Basic]], [[Common Lisp]], [[Scheme]], [[Perl]], [[Python]], [[Ruby]], [[Oz (programovací jazyk)|Oz]] a [[F#]]).
Mnohá programovací paradigmata se vyznačují tím, že umožňují, či neumožňují některé specifické programovací techniky. Kupříkladu čistě funkcionální programování zakazuje používání [[Vedlejší účinek|vedlejších účinků]], zatímco [[
== Multiparadigmatické programovací jazyky ==
Všechny tyto jazyky se řídí procedurálním paradigmatem. To znamená, že popisují krok po kroku postup, který musí být vykonán k vyřešení dané úlohy. [[Složitost algoritmů|Kvalita]] takového řešení závisí na schopnostech programátora.
Později byly vytvořeny [[
Vzhledem k tomu, že je objektově orientované programování paradigma, nikoli jazyk, bylo možné vytvořit dokonce i objektově orientovaný jazyk symbolických instrukcí. Příkladem může být High Level Assembly ([[HLA]]), který plně podporuje pokročilé datové typy a objektově orientované programování symbolickými instrukcemi navzdory svému stáří.
V rámci [[Imperativní programování|imperativního programování]] existuje alternativa ke strukturovanému programování v podobě tzv. „literate programming“, ve kterém není vše přizpůsobováno počítači, ale naopak programátorovi. Programy jsou strukturovány jako sítě [[Hypertext|propojených textů]] - dokumentace je zahrnuta v kódu programu a program je strukturován v závislosti na psaném textu, nikoli na požadavcích kompilátoru.
Nezávisle na imperativním paradigmatu, založeném na procedurálních jazycích, byla vyvinuta [[Deklarativní programování|deklarativní programovací paradigmata]]. V deklarativních jazycích je počítači řečeno, co má vykonat, nikoli jak. Program je strukturován jako soubor vlastností, které má výsledek mít, ne jako procedura, jež má být vykonána. Počítač pracuje s databází, nebo souborem pravidel a pokouší se najít řešení které má všechny požadované vlastnosti. Příkladem deklarativního programování je jazyk čtvrté generace [[SQL]], [[Funkcionální programování|funkcionální]] a [[
[[Funkcionální programování]] je podmnožinou deklarativního. Programy psané s využitím tohoto paradigmatu jsou založeny na [[Funkce (programování)|funkcích]], blocích kódu s vlastnostmi [[Funkce (matematika)|matematických funkcí]]. Funkcionální jazyky neumožňují [[Přiřazení|změnit hodnotu]] proměnných, namísto toho se používá [[
V [[Logické programování|logickém programování]] je výpočtem automatické uvažování nad znalostmi. Fakta o řešené úloze jsou vyjádřena logickými výrazy. Za běhu programu se na fakta aplikují [[Odvozovací pravidlo|odvozovací pravidla]] dokud není nalezena odpověď na dotaz, nebo dokud není prokázáno, že jsou fakta nekonzistentní.
|
editací