Programovací paradigma: Porovnání verzí

Přidáno 52 bajtů ,  před 5 lety
m
odkazy
m (→‎Historie: typo)
m (odkazy)
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í [[procesně orientované programování]], v němž je aplikace množina souběžných procesů pracujících se sdílenými [[Datová struktura|datovými strukturami]].
 
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 Sharp|C#]], [[Visual Basic]], [[Common Lisp]], [[Scheme]], [[Perl]], [[Python]], [[Ruby (programovací jazyk)|Ruby]], [[Oz (programovací jazyk)|Oz]] a [[F Sharp|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 [[strukturované programování]] znemožňuje používání příkazu [[Skok (informatika)|goto]]. I z tohoto důvodu jsou nová paradigmata oproti dřívějším často považována za dogmatická a příliš přísná. Znemožnění použití některých technik však může usnadnit pochopení programu, nebo [[automatické dokazování]] jeho správnosti.
 
== Historie ==
Původně byly počítače pevně zapojeny, tj. konstrukčně předurčeny k určitému úkonu, později programovány [[binární kód|binárním kódem]], který reprezentoval ovládací sekvence předávané [[ProcesorCentrální procesorová jednotka|procesoru]]. Tento způsob byl obtížný a náchylný k chybám. Přechod od pevného zapojení ke strojovému kódu představuje realizaci [[Von Neumannova architektura|Von Neumannova stroje]]. Pevně zapojený systém odpovídá stroji s přenosovou funkcí pro data mezi vstupem a výstupem. Funkce je tvořena propojením komponent mezi oběma rozhraními. Pozdější stroje využívají koncepce s uloženým programem. Příkladem je Von Neumannův stroj, ve kterém jsou uloženy program i data. Ve Von Neumannově stroji každý program reprezentuje jiný, pevně zapojený stroj. Program definuje přenosovou funkci pro data.
 
Binární kód je též nazýván [[Strojový kód|strojovým kódem]]. Programování ve strojovém kódu je [[Nižší programovací jazyk|programovací paradigma nejnižší úrovně]]. Kvůli usnadnění programování byly vyvinuty [[Jazyk symbolických adres|jazyky symbolických instrukcí]], někdy souhrnně nazývané jako assembler. Ty nahradily funkce strojového kódu zkratkami jejich názvů a [[Adresa (programování)|adresy v paměti]] symbolickými popisky. Programování v jazyce symbolických instrukcí je považováno za paradigma nejnižší úrovně, ač je o generaci dál než strojový kód. Dokonce i jazyky symbolických instrukcí ze [[1960–1969|60. let 20. století]] podporovaly knihovní funkci COPY a relativně sofistikované generování podmíněných maker a předzpracování. Mimoto podporovaly i funkce modulárního programování jako např. instrukci CALL ([[Funkce (programování)|volání podprogramů]]), externí proměnné a společné (globální) části kódu, čímž umožnily značné znovupoužití kódu a nezávislost na vlastnostech hardwaru použitím logických operátorů jakými jsou instrukce READ, WRITE, GET nebo PUT. Assemblery se dodnes používají v časově kritických a [[Vestavěný systém|vestavěných systémech]].