====== C++ ====== **C++** je víceparadigmatický programovací jazyk, který kombinuje efektivitu nízkoúrovňového přístupu k hardwaru s pokročilými abstrakcemi. Je to jazyk s **statickou typovou kontrolou** a **manuální správou paměti**, což programátorům dává absolutní kontrolu nad výkonem systému, ale zároveň vyžaduje vysokou míru preciznosti. ---- ====== Klíčové vlastnosti C++ ====== ===== 1. Objektově orientované programování (OOP) ===== C++ zavedlo do světa C třídy, objekty, dědičnost a polymorfismus. To umožňuje organizovat kód do logických celků, které modelují reálné objekty. ===== 2. Generické programování (Šablony) ===== Pomocí šablon (templates) lze psát kód, který je nezávislý na datovém typu. Můžete tak vytvořit jeden algoritmus pro řazení, který funguje pro celá čísla, textové řetězce i vlastní objekty. ===== 3. Přímý přístup k paměti ===== Stejně jako jazyk C, i C++ umožňuje práci s ukazateli (pointers). Programátor může přímo adresovat paměť RAM, což je klíčové pro psaní operačních systémů a ovladačů. ---- ====== Proces vzniku programu v C++ ====== Jelikož je C++ kompilovaný jazyk, kód prochází několika fázemi, než se stane spustitelným souborem: 1. **Preprocessing:** Zpracování maker a vkládání hlavičkových souborů. 2. **Kompilace:** [[compiler|Compiler]] přeloží kód do jazyka symbolických adres (assembly). 3. **Sestavení (Assembly):** Převod do objektového kódu (strojové instrukce). 4. **Linkování (Linking):** Propojení různých částí kódu a knihoven do jednoho souboru (např. .exe). ---- ====== Kde se C++ používá? ====== Díky své extrémní rychlosti najdete C++ všude tam, kde záleží na každé milisekundě: ^ Oblast ^ Příklady ^ | **Operační systémy** | Jádra Windows, macOS i části Linuxu. | | **Herní průmysl** | Většina AAA her a herní engine (např. Unreal Engine). | | **Webové prohlížeče** | Chrome, Firefox a Safari (renderovací jádra). | | **Finanční systémy** | Vysokofrekvenční obchodování na burzách. | | **Grafický software** | Produkty Adobe (Photoshop), CAD systémy a [[directx|DirectX]]. | | **AI a CV** | Knihovny pro [[computer_vision|Computer Vision]] (OpenCV) a hluboké učení. | ---- ====== C++ vs. Moderní jazyky (Java, Python, Rust) ====== ^ Vlastnost ^ C++ ^ Python / Java ^ Rust ^ | **Rychlost** | Maximální (nativní kód). | Nižší (interpret/VM). | Srovnatelná s C++. | | **Správa paměti** | Manuální (riziko chyb). | Automatická (Garbage Collector). | Automatická (vlastnictví/borrow checker). | | **Složitost** | Vysoká. | Nízká / Střední. | Vysoká. | ---- //Související pojmy: Compiler, C, Pointer, OOP, Unreal Engine, RAM, Strojový kód.//