====== Compiler (Překladač) ====== **Compiler** je klíčový nástroj vývojáře, který slouží jako "překladatel" mezi lidským zápisem logiky a fyzickým světem jedniček a nul. Na rozdíl od **interpretu**, který kód čte a vykonává řádek po řádku (jako Python), kompilátor zpracuje celý program najednou a vytvoří z něj samostatný spustitelný soubor (např. .exe v systému Windows). ---- ====== Fáze procesu kompilace ====== Moderní kompilátory jsou extrémně složité systémy, které pracují v několika logických krocích: ===== 1. Front-end (Analýza) ===== Zde se kontroluje správnost kódu: * **Lexikální analýza:** Rozbití textu na základní stavební kameny (tokeny). * **Syntaktická analýza:** Kontrola gramatiky jazyka (zda nechybí středník, závorka apod.). Vytváří se **Abstraktní syntaktický strom (AST)**. * **Sémantická analýza:** Kontrola logiky (např. zda se nepokoušíte sečíst číslo s textem). ===== 2. Middle-end (Optimalizace) ===== Kompilátor se snaží kód vylepšit, aby byl co nejrychlejší. Odstraňuje zbytečné části kódu, zkracuje matematické operace nebo optimalizuje cykly. ===== 3. Back-end (Generování kódu) ===== Výsledná logika se přeloží do instrukcí pro konkrétní procesor (např. x86 nebo ARM) a vytvoří se výsledný binární soubor. ---- ====== Proč kompilovat? (Výhody a nevýhody) ====== ^ Vlastnost ^ Kompilované jazyky (C++, Rust) ^ Interpretované jazyky (Python, JS) ^ | **Rychlost** | Velmi vysoká (nativní kód). | Nižší (nutnost překladu za běhu). | | **Odhalení chyb** | Většina chyb se najde už při kompilaci. | Chyby se často projeví až při spuštění programu. | | **Přenostitelnost** | Musí se kompilovat pro každý OS zvlášť. | Kód běží všude, kde je nainstalován interpret. | | **Vývoj** | Pomalejší (čekání na dokončení kompilace). | Rychlejší (okamžité spuštění změn). | ---- ====== Klíčové typy kompilátorů ====== * **Native Compiler:** Vytváří kód pro stejný systém, na kterém sám běží (např. kompilace na Windows pro Windows). * **Cross-Compiler:** Vytváří kód pro jiný systém (např. na počítači zkompilujete aplikaci pro mobilní telefon). * **JIT (Just-In-Time) Compiler:** Kompiluje kód "za letu" těsně předtím, než se má spustit (používá Java nebo JavaScript v prohlížeči). ---- ====== Populární kompilátory ====== * **GCC (GNU Compiler Collection):** Standard pro Linux a open-source svět. * **Clang (LLVM):** Moderní kompilátor používaný společností Apple a pro jazyk Rust. * **MSVC:** Kompilátor od Microsoftu integrovaný ve Visual Studiu. ---- //Související pojmy: C++, Strojový kód, CPU, Assembler, Java, Python, LLVM.//