====== Třetí generace jazyků (3GL) ======
**Třetí generace programovacích jazyků** (3GL) jsou tzv. **vyšší programovací jazyky**. Jsou navrženy tak, aby byly snadno čitelné pro člověka pomocí anglických klíčových slov (jako `if`, `while`, `for`, `print`). Na rozdíl od [[it:lang:1GL|strojového kódu]] a [[it:lang:2GL|asembleru]] jsou tyto jazyky **hardwarově nezávislé**.
===== 1. Hlavní přínosy 3GL =====
Před nástupem 3GL musel programátor přesně vědět, jak procesor manipuluje s registry a pamětí. 3GL přinesly revoluci v několika směrech:
* **Abstrakce:** Programátor pracuje s proměnnými a datovými typy místo přímých adres v paměti.
* **Přenositelnost (Portability):** Zdrojový kód napsaný v 3GL lze s minimálními změnami přeložit a spustit na různých architekturách (např. x86 i ARM).
* **Strukturované programování:** Zavedení logických bloků a funkcí, což umožnilo psát mnohem složitější a udržovatelnější software.
* **Produktivita:** Jeden řádek v 3GL může odpovídat desítkám instrukcí v asembleru.
===== 2. Překlad kódu: Kompilace vs. Interpretace =====
Počítač stále rozumí pouze nulám a jedničkám. Kód v 3GL proto musí být převeden do strojového kódu jedním ze dvou způsobů:
1. **Kompilace:** Celý zdrojový kód je najednou přeložen kompilátorem do spustitelného souboru (`.exe`). Příklad: **C, C++, Rust**.
2. **Interpretace:** Interpret čte kód řádek po řádku a okamžitě ho vykonává. Příklad: **Python, JavaScript**.
3. **Hybridní přístup:** Kód je přeložen do mezistupně (bytecode), který běží ve virtuálním stroji. Příklad: **Java, C#**.
===== 3. Významní zástupci a jejich éry =====
^ Období ^ Jazyky ^ Hlavní přínos ^
| **50. - 60. léta** | FORTRAN, COBOL, LISP | První vědecké výpočty, obchodní data a základy AI. |
| **70. léta** | **C**, Pascal, Ada | Systémové programování, strukturovaný návrh, efektivita. |
| **80. - 90. léta** | **C++**, Java, Python | Objektově orientované programování, internetové aplikace. |
| **Současnost** | Rust, Go, Swift | Bezpečnost paměti, moderní paralelizace a výkon. |
===== 4. Srovnání čitelnosti =====
Podívejte se, jak se zápis zjednodušil od 2GL k 3GL:
**2GL (Asembler - specifické pro procesor):**
MOV AL, 10
ADD AL, 20
**3GL (Jazyk C - univerzální):**
int vysledek = 10 + 20;
===== 5. Co následovalo? =====
Zatímco 3GL definovaly **jak** má počítač úkol vykonat (procedurální přístup), další generace se posunuly dál:
* **[[it:lang:4GL|4GL]] (Čtvrtá generace):** Jazyky zaměřené na to, **co** se má udělat (např. SQL pro databáze).
* **[[it:lang:5GL|5GL]] (Pátá generace):** Jazyky pro umělou inteligenci založené na řešení omezení a logice (např. Prolog).
----
//Související články://
* [[it:lang:2GL|Druhá generace: Jazyky symbolických adres]]
* [[it:lang:cpp|Programování v C++]]
* [[it:dev:compiler_vs_interpreter|Kompilátor vs. Interpret]]
//Tagy: {{tag>historie programming_languages 3GL abstraction software_development}}//