====== Programovací jazyky (Java, Python, C++) ====== **Programovací jazyk** je formální jazyk určený pro zápis algoritmů a instrukcí, které má počítač vykonat. Jazyky fungují jako prostředník mezi lidským myšlením a binárním světem procesoru. Rozdělujeme je podle úrovně abstrakce, způsobu překladu a paradigmatu. ===== 1. Klasifikace jazyků ===== ==== Podle úrovně abstrakce ==== * **Nízkoúrovňové (Low-level):** Jsou úzce spjaty s hardwarem. Patří sem Strojový kód a Assembler. Poskytují maximální kontrolu, ale jsou těžko čitelné pro člověka. * **Vysokoúrovňové (High-level):** Používají lidské pojmy (v angličtině) a skrývají složitost hardwaru. Většina moderních jazyků (Java, Python) patří sem. ==== Podle způsobu zpracování ==== * **Kompilované:** Celý zdrojový kód se předem přeloží do strojového kódu (soubor .exe). Jsou velmi rychlé (např. C++). * **Interpretované:** Kód se čte a vykonává řádek po řádku programem zvaným interpret. Snadněji se ladí, ale bývají pomalejší (např. Python). * **Hybridní (JIT):** Kód se přeloží do mezikódu (Bytecode), který se pak vykonává ve virtuálním stroji (např. Java, C#). --- ===== 2. Srovnání klíčových jazyků ===== ==== Python: Jazyk pro lidi ==== Python je interpretovaný, vysokoúrovňový jazyk, který klade důraz na **čitelnost kódu**. * **Filosofie:** "Batteries included" – obsahuje obrovské množství knihoven pro vše od webu po AI. * **Silné stránky:** Snadná výuka, obrovská komunita, dominance v oblasti datové vědy a umělé inteligence. * **Slabé stránky:** Nižší rychlost oproti kompilovaným jazykům, není vhodný pro vývoj mobilních aplikací. ==== Java: Stabilita a multiplatformnost ==== Java je objektově orientovaný jazyk (OOP), jehož hlavním heslem je "Write Once, Run Anywhere" (WORA). * **Princip:** Kód běží v rámci **JVM (Java Virtual Machine)**, což zajišťuje stejné chování na Windows, Linuxu i macOS. * **Silné stránky:** Robustnost, automatická správa paměti (**Garbage Collector**), standard pro korporátní backendy a Android. * **Slabé stránky:** Vyšší spotřeba paměti, upovídanost (pro zápis jednoduché věci je potřeba hodně kódu). ==== C++: Výkon a kontrola ==== C++ je kompilovaný jazyk, který vychází z jazyka C a přidává podporu pro objekty. * **Princip:** Programátor má přímý přístup do paměti a k hardwaru. Nedisponuje Garbage Collectorem (správa paměti je na vývojáři). * **Silné stránky:** Extrémní rychlost, efektivita. * **Využití:** Herní enginy (Unreal Engine), operační systémy, ovladače, finanční systémy s nízkou latencí. * **Slabé stránky:** Velmi náročné na učení, vysoké riziko chyb v paměti (memory leaks). --- ===== 3. Paradigmata programování ===== Programovací jazyky se liší i v tom, jak programátor o problému přemýšlí: * **Procedurální:** Program je posloupnost kroků (jako kuchařka). * **Objektově orientované (OOP):** Program se skládá z "objektů", které mají své vlastnosti a metody (Java, C++, Python). * **Funkcionální:** Program je sérií matematických funkcí (Haskell, Elixir). --- ===== 4. Který jazyk zvolit? ===== Volba jazyka závisí na cíli projektu: ^ Oblast ^ Doporučený jazyk ^ | **Umělá inteligence / Data Science** | Python, R | | **Vývoj her (AAA tituly)** | C++, C# | | **Podnikové systémy (Bankovnictví)** | Java, C# | | **Webový backend** | Python (Django), JavaScript (Node.js), PHP | | **Vestavěné systémy (IoT)** | C, C++, Rust | --- ===== 5. Moderní trendy ===== V posledních letech se prosazují moderní jazyky, které se snaží odstranit nedostatky svých předchůdců: * **Rust:** Stejně rychlý jako C++, ale díky svému kompilátoru prakticky eliminuje chyby v paměti. * **TypeScript:** Přidává typovou bezpečnost do JavaScriptu. * **Kotlin:** Moderní náhrada za Javu v ekosystému Android. ---- //Související články:// * [[it:dev:algorithms|Algoritmy a datové struktury]] * [[it:dev:oop|Principy objektově orientovaného programování]] * [[it:hw:cpu|Jak procesor vykonává instrukce]] //Tagy: {{tag>software development python java cpp programming coding paradimgs}}//