Obsah
Kompilátor (Compiler)
Kompilátor je klíčovým nástrojem v procesu vývoje softwaru. Funguje jako „překladatel“, který transformuje lidsky čitelný text (zdrojový kód) do binární podoby (instrukcí procesoru). Na rozdíl od interpretů (např. v Pythonu), které kód vykonávají řádek po řádku během spuštění, kompilátor zpracuje celý program najednou a vytvoří samostatný spustitelný soubor (např. .exe v Windows).
Fáze kompilace
Proces kompilace je složitý a obvykle probíhá v několika fázích:
1. Lexikální analýza (Lexing)
Kompilátor rozloží text kódu na základní jednotky zvané tokeny (klíčová slova, názvy proměnných, operátory). Odstraní také komentáře a bílé znaky.
2. Syntaktická analýza (Parsing)
Kompilátor kontroluje, zda tokeny tvoří platné věty podle pravidel jazyka. Výsledkem je vnitřní stromová struktura zvaná AST (Abstract Syntax Tree). Zde se odhalí většina syntaktických chyb.
3. Sémantická analýza
Kontroluje se logický význam kódu. Například zda se programátor nepokouší sčítat textový řetězec s číslem nebo používat neexistující proměnnou.
4. Optimalizace kódu
Kompilátor se snaží kód vylepšit tak, aby byl výsledný program rychlejší a zabíral méně paměti. Odstraňuje například nepoužívané části kódu nebo zjednodušuje matematické výpočty.
5. Generování kódu
Závěrečná fáze, kdy se vnitřní reprezentace programu převede do cílového formátu – buď přímo do strojového kódu (binární soubor), nebo do objektového kódu, který následně spojí linker.
Srovnání: Kompilátor vs. Interpret
| Vlastnost | Kompilátor (např. C++) | Interpret (např. Python) |
|---|---|---|
| Rychlost běhu | Velmi vysoká (kód je optimalizován). | Pomalejší (překládá se při běhu). |
| Odhalení chyb | Většina chyb se zjistí před spuštěním. | Chyby se často projeví až při spuštění programu. |
| Distribuce | Uživatel dostane hotový soubor (.exe). | Uživatel musí mít nainstalovaný interpret. |
| Přenositelnost | Nutno kompilovat pro každý OS zvlášť. | Kód běží všude, kde je interpret. |
Typy kompilátorů
- Nativní kompilátor: Vytváří kód pro stejnou platformu, na které sám běží (např. kompiluji na Windows pro Windows).
- Křížový kompilátor (Cross-compiler): Běží na jedné platformě, ale vytváří kód pro jinou (např. kompiluji na PC software pro mikročip v pračce).
- JIT Kompilátor (Just-In-Time): Hybridní přístup používaný v Javě nebo C#. Kód se nejprve přeloží do mezistupně (bytecode) a do strojového kódu se kompiluje až ve chvíli, kdy je potřeba jej spustit.
Slavné kompilátory
- GCC (GNU Compiler Collection): Klíčový projekt pro open-source a Linux. Podporuje mnoho jazyků (C, C++, Fortran).
- Clang/LLVM: Moderní kompilátor používaný firmami jako Apple či Google. Je známý výbornými chybovými hlášeními a rychlostí.
- MSVC (Microsoft Visual C++): Standardní kompilátor pro vývoj aplikací v operačním systému Windows.
Související pojmy: Zdrojový kód, Strojový kód, Linker, Bug, Java, Interpret, Debugging.
