====== Programovací jazyky a jejich syntaxe ====== Zatímco lidské jazyky jsou tolerantní k drobným chybám (překlepy, chybějící čárky), počítačové jazyky vyžadují absolutní přesnost. **Syntaxe** definuje vnější podobu programu, zatímco **sémantika** definuje jeho význam (co program skutečně dělá). ===== 1. Základní stavební kameny syntaxe ===== Téměř všechny moderní jazyky sdílejí několik základních syntaktických konceptů: * **Klíčová slova (Keywords):** Rezervovaná slova, která mají pro jazyk speciální význam (např. ''if, else, while, return, class''). * **Identifikátory:** Názvy, které dává programátor proměnným, funkcím a třídám. * **Operátory:** Symboly pro operace (např. ''+, -, *, /, ==, &&''). * **Literály:** Fixní hodnoty přímo v kódu (např. číslo ''42'' nebo řetězec ''"Ahoj"''). * **Oddělovače:** Symboly určující strukturu (závorky ''(), {}, []'' nebo středníky '';''). ===== 2. Různé přístupy ke struktuře kódu ===== Jazyky se liší v tom, jak určují hranice bloků kódu (např. co patří do cyklu nebo funkce): ==== Jazyky se složenými závorkami (C-style) ==== Využívají složené závorky `{}` k vymezení bloků a středníky `;` k ukončení příkazů. * **Zástupci:** C, C++, Java, JavaScript, C#, PHP. * **Příklad (C#):** if (teplota > 30) { Console.WriteLine("Je horko"); } ==== Jazyky s významným odsazením (Indentation-based) ==== Struktura kódu je definována mezerami nebo tabulátory na začátku řádku. * **Zástupci:** Python, Haskell, YAML. * **Příklad (Python):** if teplota > 30: print("Je horko") *Poznámka: Chybné odsazení v Pythonu vede k chybě (IndentationError).* --- ===== 3. Typový systém: Statický vs. Dynamický ===== Syntaxe se také liší podle toho, jak jazyk zachází s datovými typy: * **Statické typování:** Programátor musí (nebo kompilátor sám) určit typ proměnné při jejím vzniku. Typ se už nemůže změnit. * *Příklad (Java):* int cislo = 5; * **Dynamické typování:** Typ proměnné se určí až za běhu podle toho, co do ní vložíte. * *Příklad (Python):* cislo = 5 (v dalším kroku klidně cislo = "pět"). --- ===== 4. Syntaktický cukr (Syntactic Sugar) ===== Tento termín označuje části syntaxe, které jsou navrženy tak, aby se kód lidem lépe četl a psal, přestože danou věc lze vyjádřit i složitěji. * **Příklad:** Operátor i++ místo i = i + 1. * **Příklad:** Deklarace vlastností v moderních verzích C# nebo Java, které zkracují dlouhé definice getterů a setterů v [[it:dev:oop|objektovém programování]]. --- ===== 5. Proces zpracování: Od zdrojového kódu k instrukcím ===== Aby mohl počítač kód vykonat, musí projít syntaktickou analýzou: 1. **Lexikální analýza (Lexing):** Rozdělení textu na základní jednotky (tokeny). 2. **Syntaktická analýza (Parsing):** Kontrola, zda tokeny tvoří platné struktury podle gramatiky jazyka. Výsledkem je **AST (Abstract Syntax Tree)**. 3. **Generování kódu:** Převod stromu do strojových instrukcí nebo mezikódu. ---- //Související články:// * [[it:dev:languages|Programovací jazyky (Java, Python, C++)]] * [[it:dev:oop|Objektově orientované programování]] * [[it:dev:algorithms|Algoritmy a datové struktury]] //Tagy: {{tag>dev syntax programming_languages compilers parsing indentation}}//