Typová kontrola: Porovnání verzí

Smazaný obsah Přidaný obsah
+typová inference
Narovnání přesměrování Ruby (programovací jazyk)
Řádek 7:
 
== Dynamická typová kontrola ==
Dynamická typová kontrola probíhá za běhu programu. Jazyky používající dynamické typování nepožadují specifikaci datového typu u proměnných a ty mohou tudíž odkazovat na hodnotu jakéhokoli typu. Mezi ''dynamicky'' ''typované'' patří [[JavaScript]], [[Lisp]], [[Lua]], [[PHP]], [[Prolog (programovací jazyk)|Prolog]], [[Python]], [[Ruby (programovací jazyk)|Ruby]], [[Smalltalk]]. Dynamické typování je pružnější, protože programy generují typy a funkcionalitu na základě běhových dat, ale také častější na běhové chyby, kdy hodnota nabude neočekávaného typu a ten se použije pro další zpracování. Běhová chyba se projeví až daleko od místa svého vzniku a je těžko odhalitelná.
 
U dynamicky typovaného jazyka se při kompilaci provede pouze [[syntaktická analýza]]. Běhové kontroly umožní sofistikovanější přístup, protože využívají současně hodnocení všech statických i dynamických informací. Nevýhodou je nutnost provádění kontroly při každém vykonání programu, případně dokonce i při každé práci s daty. V praxi může dynamické testování objevit mnohem širší rozsah chyb než statická typová kontrola, nicméně neumí ošetřit některé chyby detekované při statické kontrole. Když ale pomineme chyby, které se obvykle za typové nepovažují, například dělení nulou, tak dynamická kontrola má víc informací a tak pokud programátor ví jak na to a kompilátor je na to připraven, lze teoreticky objevit všechny statické chyby. Dynamické testování typů probíhá pouze v použitých částech kódu, např. větvích if-ů, kdežto statická v celém programu. Z tohoto důvodu statické typování odmítne víc programů. A pokud chce programátor kód spustit, musí chyby odstranit.