Programovací jazyky

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Vytvoření stránky)
 
(Skriptovací jazyky: Doplnění, že skriptovací jazyky nepotřebují deklaraci proměnných.)
 
(Není zobrazeno 9 mezilehlých verzí od 1 uživatele.)
Řádka 1: Řádka 1:
[[Category:VSE]][[Category:Informatika]][[Category:Programování]]
+
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Stránky s obrázky]]
  
 
== Interpretované a kompilované programovací jazyky ==
 
== Interpretované a kompilované programovací jazyky ==
 +
* Programátor píše ''zdrojový kód'' jazyka. Tedy „písmenka“ srozumitelné člověku. Tomu ale počítač nerozumí. Je tedy potřeba zdrojový kód přeložit a vytvořit tak odpovídající posloupnost instrukcí procesoru:
 +
Zdrojový kód → instrukce procesoru
 +
* Podle toho, ''kdy'' se překlad provádí, dělíme jazyky na ''interpretované'' a ''kompilované''.
 +
 +
; Interpretované jazyky
 +
* Programátor vytváří zdrojový kód a předává ho uživateli.
 +
* Uživatel spustí tento kód pomocí interpretu.
 +
* Interpret je program, který čte zdrojový kód, překládá ho a ihned spouští.
 +
* Příklady: Python, JavaScript,...
 +
 +
; Kompilované jazyky
 +
* Překlad na posloupnost instrukcí provede programátor.
 +
* Příklady: Pascal, C++,...
 +
 +
<div class="Poznamka">
 +
; Jak je to s Javou?
 +
 +
Zdrojový kód se překládá (kompiluje) na byte-code, který se odesílá uživateli a ten si jej spouští prostřednictvím virtuálního stroje Javy (JVM).
 +
 +
Java tedy není dobrý příklad ani na jednu skupinu jazyků, přebírá část výhod a&nbsp;část nevýhod z obou skupin.
 +
</div>
 +
 +
; Výhody interpretovaných
 +
* Program v interpretovaných jazycích je snadno přenositelný mezi platformami, stačí použít správný interpret (viz třeba JavaScript).
 +
* Při hledání chyb je k&nbsp;dispozici přímo zdrojový kód, u&nbsp;některých vývojových prostředí můžete dokonce přímo za běhu kód upravovat a zkoumat jeho chování. To u kompilovaných není možné, protože zdrojový kód již nemáme k dispozici.
 +
 +
; Výhody kompilovaných
 +
* Běh programů je rychlejší, nemusí se provádět překlad. Bývá také méně náročný na operační paměť.
 +
* U interpretovaných jazyků uživatel dostává do ruky zdrojový kód, může jej číst, modifikovat, upravovat. U&nbsp;některých projektů to není vhodné.
 +
* U kompilovaných jazyků uživatel nepotřebujete interpret, spouštění je jednodušší.
 +
 +
<div class="Upozorneni">
 +
Souhrn:
 +
* Interpretované jazyky jsou obvykle vhodné pro menší projekty nebo tam, kde potřebujeme rychle nějaký program zapsat, často si program děláme pro sebe nebo svoji firmu. Nezastupitelné jsou i pro svoji přenositelnost.
 +
* Kompilované jazyky jsou obvykle vhodné pro větší projekty (rychlejší běh) a&nbsp;kde program napíši jednou a pak už není třeba provádět změny.
 +
</div>
 +
 
[[File:InterpretXkomp.png]]
 
[[File:InterpretXkomp.png]]
  
 
== Vyšší a nižší programovací jazyky ==
 
== Vyšší a nižší programovací jazyky ==
  
== Historie programovacích jazyků ==
+
=== Strojový kód ===
 +
<div class="Poznamka">Charakteristika:
 +
* Není třeba překlad, kód lze přímo umístit do paměti.
 +
* Procesor čte kód a provádí ho přímo.
 +
</div>
 +
*Procesor:
 +
** čte z paměti posloupnosti byte (čísla)
 +
** a podle čísla rozhoduje, co má dělat.
 +
číslo &rarr; instrukce
 +
*K zápisu instrukcí je třeba vymyslet pořadí bitů a znát jejich význam.
 +
*Někdy řazen mezi nižší programovací jazyky, ale není třeba překládat ani kompilovat.
 +
*Zápis programu ve strojovém kódu uvidíme, když si otevřeme spustitelný soubor v hexadecimálním editoru.
 +
<div class="Priklad">Příklad:
 +
* <code>8B 07</code> ... přesune číslo v registru AX do paměti na adresu uloženou v registru BX
 +
</div>
 +
 
 +
=== Nižší programovací jazyky ===
 +
<div class="Poznamka">Charakteristika:
 +
* Výsledný zdrojový kód je vždy závislý na konkrétním typu procesoru.
 +
* Jiný typ procesoru má jiné instrukce.
 +
</div>
 +
*Jeden příkaz se přepíše přesně na jednu instrukci procesoru.
 +
několikapísmenný název &rarr; instrukce
 +
*Označení „assembler“.
 +
*Oproti strojovému kódu nabízí:
 +
**Instrukcím jsou přiřazeny názvy &mdash; není tedy třeba pamatovat si binární kódy instrukcí.
 +
**Pojmenování míst v paměti (proměnné) &mdash; nemusíme tedy psát přímo adresy v paměti, můžeme adresy na začátku pojmenovat a pak používat jména.
 +
<div class="Priklad">Příklad:
 +
* <code>MOV AX, [BX]</code> ... přesune číslo v registru AX do paměti na adresu uloženou v registru BX
 +
</div>
 +
 
 +
Podrobnější příklad viz [[CPU#Procesor_z_pohledu_SW | CPU &rarr; Procesor z pohledu SW]].
 +
 
 +
=== Vyšší programovací jazyky ===
 +
<div class="Poznamka">Charakteristika:
 +
* Zdrojový kód není závisly na typu procesoru.
 +
* Stejný kód lze po změně překladače přeložit pro jiný typ procesoru.
 +
</div>
 +
* Příkazy jsou slovní, jsou blíže přirozenému jazyku.
 +
* Jeden příkaz se přeloží na posloupnost instrukcí.
 +
příkaz &rarr; posloupnost více instrukcí.
 +
*První FORTRAN (1956)
 +
*Velká skupina, i mezi nimi jsou rozdíly:
 +
**mají blíže k přirozenému jazyku, jsou vzdálené principu práce počítače (Java, Pascal, PHP,...)
 +
**mají blíže instrukcím procesoru (C,...)
 +
<div class="Priklad">Příklad:
 +
* <code>if (a > 4) b--; </code> ... překladač přepíše na delší posloupnost instrukcí procesoru:
 +
**Přesun obsahu proměnné A do registru.
 +
**Odečtení hodnoty 4 od obsahu registru.
 +
**Porovnání hodnoty registru proti 0.
 +
**Vyhodnocení výsledku.
 +
**Skok na správné místo v paměti, kde je další kód.
 +
**Provedení dalšího kódu
 +
***Buď odečtení jedničky od hodnoty proměnné B (opět několika instrukcemi).
 +
***Nebo pokračování v kódu programu bez modifikace proměnné B.
 +
</div>
 +
 
 +
== Skriptovací programovací jazyky (a ty ostatní) ==
 +
 
 +
=== Skriptovací jazyky ===
 +
* Při jejich návrhu se počítalo s&nbsp;tím, že budou sloužit pro psaní menších programů (skriptů), často jednorázově používaných.
 +
* Typickým předpokládaným použitím byla automatizace úloh v&nbsp;operačním systému a programové ovládání systému.
 +
* Typické rysy:
 +
** Obvykle bývají dynamicky typované. (Proměnná nemá trvale specifikovaný datový typ.)
 +
** Často nevyžadují deklaraci proměnných před jejich použitím.
 +
* Syntaxe je navržena tak, aby se kód psal rychle a neobsahoval mnoho textu.
 +
* Jsou vhodné pro psaní jednorázových aplikací či jednoduchých programů (skriptů).
 +
* Typickými skriptovacími jazyky jsou JavaScript, PHP, Python či BASH.
 +
 
 +
<div class="Poznamka">
 +
Přesto, že skriptovací jazyky byly původně koncipovány pro psaní skriptů, je běžné, že se některé z&nbsp;nich dnes používají pro rozsáhlé aplikace. Typickými příklady jsou PHP či Python. V&nbsp;takovém případě jejich syntaxe klade větší nároky na pečlivou dokumentaci a dodržování konvencí a dohod v&nbsp;týmu ze strany každého programátora.
 +
</div>
 +
 
 +
=== Ostatní jazyky (ne-skriptovací) ===
 +
* Mívají silnější typovou kontrolu, bývají staticky typované.
 +
* Syntaxe bývá navržena tak, aby umožňovala spolupráci většího týmu a předcházela chybám programátora &mdash; i za cenu většího množství textu.
 +
* Typickými jazyky této kategorie jsou C# či Java.
 +
 
 +
== Související stránky ==
 +
* [[Historie programovacích jazyků]], [[CPU]]

Aktuální verze z 17. 9. 2024, 09:44


Obsah

Interpretované a kompilované programovací jazyky

Zdrojový kód → instrukce procesoru
Interpretované jazyky
Kompilované jazyky
Jak je to s Javou?

Zdrojový kód se překládá (kompiluje) na byte-code, který se odesílá uživateli a ten si jej spouští prostřednictvím virtuálního stroje Javy (JVM).

Java tedy není dobrý příklad ani na jednu skupinu jazyků, přebírá část výhod a část nevýhod z obou skupin.

Výhody interpretovaných
Výhody kompilovaných

Souhrn:

  • Interpretované jazyky jsou obvykle vhodné pro menší projekty nebo tam, kde potřebujeme rychle nějaký program zapsat, často si program děláme pro sebe nebo svoji firmu. Nezastupitelné jsou i pro svoji přenositelnost.
  • Kompilované jazyky jsou obvykle vhodné pro větší projekty (rychlejší běh) a kde program napíši jednou a pak už není třeba provádět změny.

InterpretXkomp.png

Vyšší a nižší programovací jazyky

Strojový kód

Charakteristika:
  • Není třeba překlad, kód lze přímo umístit do paměti.
  • Procesor čte kód a provádí ho přímo.
číslo → instrukce
Příklad:
  • 8B 07 ... přesune číslo v registru AX do paměti na adresu uloženou v registru BX

Nižší programovací jazyky

Charakteristika:
  • Výsledný zdrojový kód je vždy závislý na konkrétním typu procesoru.
  • Jiný typ procesoru má jiné instrukce.
několikapísmenný název → instrukce
Příklad:
  • MOV AX, [BX] ... přesune číslo v registru AX do paměti na adresu uloženou v registru BX

Podrobnější příklad viz CPU → Procesor z pohledu SW.

Vyšší programovací jazyky

Charakteristika:
  • Zdrojový kód není závisly na typu procesoru.
  • Stejný kód lze po změně překladače přeložit pro jiný typ procesoru.
příkaz → posloupnost více instrukcí.
Příklad:
  • if (a > 4) b--; ... překladač přepíše na delší posloupnost instrukcí procesoru:
    • Přesun obsahu proměnné A do registru.
    • Odečtení hodnoty 4 od obsahu registru.
    • Porovnání hodnoty registru proti 0.
    • Vyhodnocení výsledku.
    • Skok na správné místo v paměti, kde je další kód.
    • Provedení dalšího kódu
      • Buď odečtení jedničky od hodnoty proměnné B (opět několika instrukcemi).
      • Nebo pokračování v kódu programu bez modifikace proměnné B.

Skriptovací programovací jazyky (a ty ostatní)

Skriptovací jazyky

Přesto, že skriptovací jazyky byly původně koncipovány pro psaní skriptů, je běžné, že se některé z nich dnes používají pro rozsáhlé aplikace. Typickými příklady jsou PHP či Python. V takovém případě jejich syntaxe klade větší nároky na pečlivou dokumentaci a dodržování konvencí a dohod v týmu ze strany každého programátora.

Ostatní jazyky (ne-skriptovací)

Související stránky

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje