Obsah
Dynamické typování
Dynamické typování (Dynamic Typing) je vlastnost programovacího jazyka, při které jsou datové typy proměnných kontrolovány a přiřazovány až během běhu programu (runtime), a nikoliv předem při kompilaci. V dynamicky typovaném jazyce proměnná sama o sobě nemá pevně daný typ – typ nese aktuální hodnota, kterou je proměnná právě naplněna.
Jak dynamické typování funguje?
V praxi to znamená, že do jedné proměnné můžete v průběhu běhu programu uložit nejdříve celé číslo, pak textový řetězec a nakonec třeba pole, aniž byste museli typ explicitně deklarovat.
# Příklad v Pythonu cislo = 42 # Proměnná je nyní typu integer cislo = "Ahoj světa" # Změna hodnoty na řetězec (string) projde bez chyby
| Vlastnost | Dynamické typování | Statické typování |
|---|---|---|
| Určení typu | Za běhu programu (runtime) podle přiřazené hodnoty. | Předem při kompilaci (explicitní deklarace). |
| Flexibilita | Vysoká, proměnné mohou měnit svůj typ za chodu. | Nízká, typ proměnné je pevně dán a neměnný. |
| Odhalení chyb | Až při spuštění programu (když nastane neplatná operace). | Již při psaní kódu nebo během kompilace. |
Výhody a nevýhody dynamického typování
* Výhody: * Rychlejší vývoj a menší množství kódu: Nemusíte složitě definovat datové struktury a typy předem, což zrychluje prototypování. * Větší flexibilita: Snadnější manipulace s daty, která mění svou strukturu za běhu (např. JSON odpovědi z API). * Nevýhody: * Pozdní odhalení chyb: Chybu typu (např. sčítání textu a čísla) odhalí interpreter až ve chvíli, kdy k danému řádku kódu za běhu skutečně dojde. * Horší nástroje (Tooling): Vývojová prostředí (IDE) mají horší možnost našeptávání kódu (autocomplete) a refaktoringu, protože přesně nevědí, jaký typ bude v proměnné uložen.
Kde se dynamické typování používá?
Dynamické typování je typické pro skriptovací jazyky a technologie často používané ve webovém vývoji a analýze dat:
| Jazyk | Popis |
|---|---|
| Python | Univerzální jazyk, kde proměnné vznikají prostým přiřazením hodnoty. |
| JavaScript | Základní jazyk pro webové prohlížeče (dynamický, slabě typovaný). |
| PHP | Serverový jazyk pro tvorbu webových stránek a redakčních systémů. |
| Ruby | Objektově orientovaný jazyk známý svou flexibilitou. |
Tip: Pojem „dynamické typování“ se často zaměňuje se „slabým typováním“ (Weak Typing). Ačkoliv spolu úzce souvisí, dynamické určuje kdy se typ kontroluje (za běhu), zatímco slabé určuje, jak moc je jazyk přísný při automatickém převodu typů (např. sčítání čísla a textu).
