Programovací paradigma

Programovací paradigmata představují způsob seskupení programovacích jazyků podle toho, co dělají. Jazyky mohou patřit do více než jednoho paradigmatu.

Některá paradigmata se zabývají způsobem, jakým je kód spouštěn, například povolením vedlejších efektů nebo nutností provádět věci v určitém pořadí. Jiná paradigmata se zaměřují na způsob, jakým je kód seskupen, například na to, zda je kód rozdělen do jedné nebo dvou částí (nebo naopak do mnoha malých částí). Některá další paradigmata se zabývají pořadím a částmi, díky nimž je program takový, jaký je.

Existují dvě hlavní skupiny paradigmat, imperativní a deklarativní. Jazyk může být současně oběma paradigmaty.

Obsah

·         1 Imperativní programování

·         2 Deklarativní programování

·         3 Další paradigmata

·         4 Přehled

·         5 Problémy s paradigmaty

·         6 Historie

o    6.1 Strojový kód

o    6.2 Procedurální jazyky

o    6.3 Objektově orientované programování

o    6.4 Deklarativní paradigmata

·         7 Související stránky

·         8 Odkazy

·         9 Další webové stránky

Imperativní programování

V imperativních programech programátoři zadávají počítači soubor uspořádaných kroků, které je třeba provést, aby se něco udělalo. Pokud by někdo chtěl, aby počítač nakreslil kočičí obličej, mohl by zadat pokyny typu: "Nakresli kruh sem, nakresli dva menší kruhy tam, nakresli dva trojúhelníky nahoře" atd. Imperativní programy mají někdy spoustu vedlejších efektů.

Existují dvě hlavní paradigmata imperativů a v mnoha případech se v jazycích používají obě:

  • Strukturované - počítač dostává pokyny, které jsou vždy v určitém pořadí. Kroky typu "vrať se na krok 3" (tzv. příkazy goto) nejsou povoleny.
    • Procedurální - Program umožňuje programátorovi pojmenovat seznam příkazů, čímž se z těchto příkazů stane "procedura", kterou může později použít. Většina strukturovaných jazyků je také procedurální.
  • Objektově orientovaný - myšlenky jsou počítači vysvětlovány pomocí objektů, částí kódu, které mají určitý počet příkazů, které jim mohou být zadány, a některé informace o nich.

Deklarativní programování

V deklarativních paradigmatech programátor říká počítači, co má udělat, místo toho, jak to má udělat. Pokud by chtěl, aby počítač nakreslil obličej kočky, mohl by zadat pokyny typu "Nakresli obličej, nakresli dvě oči, dvě uši a ústa".

Nejznámější deklarativní paradigmata jsou:

  • Funkční - Většinu práce vykonávají funkce bez vedlejších účinků.
  • Logika - uvede se soubor faktů a poté se položí jedna nebo více "otázek".
  • Řízené událostmi - části kódu jsou nastaveny tak, aby se spustily, když se stane určitá věc (například zapnutí počítače).

Další paradigmata

Některá paradigmata se vyskytují jak v imperativních, tak v deklarativních jazycích. Tato paradigmata se obvykle vyskytují společně s jedním z výše uvedených paradigmat, místo aby se vyskytovala samostatně.

Přehled

Programovací jazyky se dělí do skupin podle paradigmat stejně jako stroje podle toho, k čemu se používají.

Několik jazyků spadá pouze do jednoho hlavního paradigmatu, jako např.:

  • Smalltalk (objektově orientovaný)
  • Assembly (imperativní, ale ne strukturovaný nebo objektově orientovaný)
  • Haskell (funkcionální)
  • Prolog (logika)

Většina jazyků má však více než jedno paradigma. Některé z nich vynikají tím, že mají více než jen jedno:

  • Scala (objektově orientovaná, funkcionální, paralelní)
  • Visual Basic (událostmi řízený, objektově orientovaný)
  • Common Lisp (procedurální, funkcionální, objektový, meta)
  • Schéma (funkční, procedurální, meta)
  • Perl (funkcionální, procedurální, meta, objektově orientovaný, řízený událostmi)
  • Python (funkcionální, objektově orientovaný, procedurální)
  • Ruby (funkcionální, objektově orientované, procedurální)
  • Jazyk Wolfram (funkcionální, procedurální, obecně deklarativní)
  • Oz (logické, funkcionální, imperativní, objektově orientované)
  • F# (funkcionální, imperativní, objektově orientovaný, meta)

Mít více paradigmat není vždy dobré. Jednou z možností, kdy může být méně paradigmat dobrá věc, je jazyk, který je pouze funkcionální. Funkce v takovém jazyce někdy udělá méně práce (například projde jen ty části skupiny věcí, které skutečně potřebuje), než by musela, kdyby byl jazyk zároveň procedurální.

Mnohá programovací paradigmata jsou známá jak tím, co lidem neumožňují, tak tím, co jim umožňují. Jedním z případů, kdy to platí, jsou funkcionální jazyky. Pokud je funkcionální jazyk pouze nebo převážně funkcionální, obvykle nedovoluje vedlejší efekty. Jiným případem, kdy to platí, je strukturované programování: od běžných imperativních jazyků se liší tím, že programátorům neumožňuje používat příkazy "goto" (příkazy, které říkají programu, aby přešel na dřívější krok). Z tohoto a dalších důvodů si lidé někdy myslí, že nová paradigmata neumožňují dost věcí. Někdy je však v pořádku, že počítač lidem něco neumožňuje: může to lidem pomoci vyhnout se problémům s jejich kódem a nechat počítač odhadnout, že tak může kód spustit rychleji, nebo dokonce zkontrolovat kód na problémy ještě předtím, než se kód spustí!

Přehled různých programovacích paradigmat podle Petera Van RoyeZoom
Přehled různých programovacích paradigmat podle Petera Van Roye

Problémy s paradigmaty

Některým lidem, kteří studují programovací jazyky, se nelíbí, že se paradigmata používají pro seskupování programovacích jazyků, jako například Harperovi a Krishnamurthimu. Tito lidé tvrdí, že mnoho programovacích jazyků nelze jednoduše zařadit do skupin podle paradigmat, protože jazyky si vypůjčují věci a myšlenky z mnoha paradigmat.

Historie

V průběhu času vznikala nová paradigmata, na která lidé upozorňovali buď v době jejich vzniku, nebo při zpětném pohledu. Jedním z prvních paradigmat, které bylo rozpoznáno jako nový způsob programování, bylo strukturované programování z 60. let 20. století. Myšlenka "programovacího paradigmatu" pochází z roku 1978, ne-li dříve, kdy ji při výuce použil Robert W. Floyd. Slovo "paradigma" v tom smyslu, jak jej Robert mínil, poprvé použil Thomas Kuhn ve své knize Struktura vědeckých revolucí (1962).

Strojový kód

Nejnižší úrovní (nejbližší tomu, jak počítač rád chápe věci) a nejstarším programovacím paradigmatem je strojový kód, imperativní paradigma. Pokyny ve strojovém kódu jsou jen souborem čísel v určitém pořadí. Jazyk assembler je o něco méně nízkoúrovňový (a o něco méně starý). V assembleru jsou pokyny pro počítač pojmenovány mnemotechnickými znaky (názvy, které se snadněji zapamatují) a adresy paměti (pokyny k nalezení určité informace v počítači) mohou být pojmenovány. Těmto jazykům se někdy říká jazyky první a druhé generace.

V 60. letech 20. století byly jazyky assembleru vylepšeny přidáním nových věcí, jako je knihovna COPY, makra (kousky "speciálního" kódu, které se před spuštěním programu transformují na normální kód), spouštění procedur (sady pokynů, kterým je dáno jméno a které se uloží na později) a proměnné (položky, kterým je dáno jméno a které se uloží na později) mimo program. To umožnilo lidem používat některý kód ve více než jednom projektu a nemuset se obávat s hardwarově specifickými problémy (problémy, které se vyskytují pouze na jednom druhu počítače) díky příkazům (názvům pro směry) jako READ/WRITE/GET/PUT.

Assembly se používal a někdy stále používá v systémech, kde je důležité, aby byl kód rychlý, a také se hodně používá ve vestavěných systémech, protože umožňuje uživateli přesně kontrolovat, co stroj dělá.

Procedurální jazyky

Na samém konci 60. let začali lidé vymýšlet procedurální jazyky. Tyto jazyky třetí generace (několik prvních jazyků, které dnes nazýváme jazyky vysoké úrovně) měly slova související s tím, co se snažily řešit. Například,

  • COBOL (COmmon Business Oriented Language) - používá slova jako soubor, přesunout a kopírovat.
  • FORmula TRANslation (FORTRAN) - používá matematická slova a symboly ( tvary používané při psaní a psaní). Byl vyvinut především pro přírodovědné a technické obory.
  • Jazyk ALGOrithmic Language (ALGOL) - je určen pro psaní algoritmů (souborů kroků, které říkají počítači, co má dělat). Používá matematická slova a symboly, stejně jako FORTRAN.
  • Programovací jazyk jedna (PL/I) - měl být užitečný pro každého.
  • Univerzální symbolický instrukční kód pro začátečníky (BASIC) - vytvořený pro začátečníky.
  • C - programovací jazyk určený k mnoha činnostem. Dennis Ritchie na něm pracoval v letech 1969 až 1973 v AT&T Bell Labs.

Objektově orientované programování

Poté, co mnoho lidí začalo používat procedurální jazyky, byly vynalezeny objektově orientované programovací jazyky. V těchto jazycích jsou data a jejich "metody" (způsoby manipulace s daty) umístěny v jednom "objektu". Někteří programátoři, například Richard Stallman, nesouhlasí s tím, že objektově orientované jazyky jsou pro vysvětlení myšlenek počítači lepší než procedurální jazyky.

Protože objektově orientované programování je paradigma, nikoli jazyk, vytvořili lidé objektově orientované assemblerové jazyky jako HLA (High Level Assembly).

Deklarativní paradigmata

Ve stejné době někteří lidé vytvářeli deklarativní programovací jazyky. Jazyk, který je známý tím, že je deklarativní, je SQL (jazyk pro přidávání a odebírání věcí z tabulek).

Související stránky

  • Myšlení
  • Typový systém
  • Turingova úplnost

Otázky a odpovědi

Otázka: Co je to programovací paradigma?


Odpověď: Programovací paradigma je způsob seskupení programovacích jazyků podle způsobu jejich fungování.

Otázka: Jaké jsou dvě hlavní skupiny paradigmat?


A: Dvě hlavní skupiny paradigmat jsou imperativní a deklarativní.

Otázka: Jak se liší imperativní a deklarativní paradigma?


Odpověď: Imperativní paradigmata se zabývají způsobem, jakým je kód spouštěn, například povolením vedlejších efektů nebo nutností dělat věci v určitém pořadí, zatímco deklarativní paradigmata se zabývají způsobem, jakým je kód seskupen, například rozdělením kódu do jedné nebo dvou částí (nebo naopak mnoha malých částí).

Otázka: Může být jazyk zároveň imperativním i deklarativním paradigmatem?


Odpověď: Ano, jazyk může být současně imperativním i deklarativním paradigmatem.

Otázka: Jak programovací paradigma seskupuje jazyky?


Odpověď: Programovací paradigmata seskupují jazyky podle toho, co dělají. Dívají se na to, jak se kód spouští, jak je seskupen a v jakém pořadí a z jakých částí se program skládá.

Otázka: Existují i jiné typy programovacích paradigmat než imperativní a deklarativní?


Odpověď: Ano, kromě imperativního a deklarativního existují i jiné typy programovacích paradigmat. Některá se například zabývají způsobem, jakým je kód spouštěn (například povolením vedlejších efektů), zatímco jiná se zabývají způsobem, jakým je kód seskupen (například zařazením kódu do jedné nebo dvou částí).

Otázka: Patří každý jazyk pouze do jednoho typu programovacího paradigmatu?


Odpověď: Ne, ne každý jazyk patří pouze do jednoho typu programovacího paradigmatu; některé jazyky mohou patřit do více typů paradigmat.

AlegsaOnline.com - 2020 / 2023 - License CC3