====== 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}}//