Jsou okamžiky, kdy se v technologiích ukáže pravda tak jasně, že ji nejde přehlédnout. Když celý svět nezávisle na sobě dojde ke stejnému závěru. Když čísla řeknou nahlas to, co jste roky cítili v kódu.
Duck typing je mrtvý. Typy vyhrály. Ve všech jazycích, ve všech komunitách, na všech frontách. A já mám z toho obrovskou radost, protože tahle cesta, cesta silných typů, byla vždycky ta správná.

Proroctví
Monkey patching, duck typing, odmítání dependency injection – to všechno vyrůstá ze stejného kořene. Z přesvědčení, že explicitní struktura je zbytečná. Že kód nepotřebuje říkat, co očekává a co vrací. Že volnost je důležitější než předvídatelnost. A že kdo chce typy, DI a jasné kontrakty, ten prostě nepochopil krásu dynamických jazyků.
V roce 2007 jsem napsal článek Ruby on Rails? Děkuji, nechci, kde jsem kritizoval monkey patching – zvyk v Ruby libovolně předefinovávat existující třídy za běhu programu. Komunita mi vysvětlila, že jsem zkostnatělý a nerozumím modernímu programování.
V roce 2012 přišel článek Objeví Rails
Dependency Injection?, kde jsem popsal, jak Rails odmítají dependency
injection s argumentem, že „Ruby je tak dobrý jazyk, že DI vůbec
nepotřebuje“. Model Post fungoval zároveň jako entita
i repozitář, závislosti se skrývaly za statickými voláními a celý
systém držel pohromadě jen díky konvencím a naději. Předpověděl jsem,
že Rails jednou DI objeví a bude to velké téma.
Je rok 2026.
Stále neobjevili ☹
JavaScript je mrtvý
Podívejte se na výsledky ankety State of JavaScript 2025. 40 procent vývojářů píše výhradně v TypeScriptu. A kolik jich píše výhradně v čistém JavaScriptu, tedy bez jakýchkoliv typů?
Šest procent.
To je méně než lidí, kteří věří, že Země je placka. TypeScript se v roce 2025 stal nejpoužívanějším jazykem na GitHubu, předběhl Python i samotný JavaScript. Za jediný rok přibyl milion nových přispěvatelů, nárůst o 66 %.
A co víc: samotná TC39, komise zodpovědná za vývoj JavaScriptu, pracuje na návrhu, který přidá typové anotace přímo do jazyka. Víte proč? Protože „statické typování“ bylo v anketě State of JS nejžádanější chybějící feature pět let po sobě. Každý rok. 2020, 2021, 2022, 2023, 2024. Programátoři chtěli typy tak zoufale, že se jim to vtisklo do samotné specifikace jazyka.
JavaScript bez typů je mrtvý jazyk. Jen o tom ještě neví.
Kachna přiznala barvu
A Python? Python, posvátná země duck typingu? Vlast, kde se generace programátorů učily, že „pokud to chodí jako kachna a kváká jako kachna, tak je to kachna a víc nepotřebujete vědět“?
86 % Python vývojářů dnes pravidelně používá typové anotace. Guido van Rossum, tatíček Pythonu, ten samý člověk, který do jazyka desítky let žádné typy nedával, prohlásil typové anotace za zásadní přínos pro produktivitu velkých projektů. A pak šel pracovat na mypy, nástroji pro statickou typovou kontrolu.
FastAPI, nejpopulárnější Python web framework, je na typech doslova postavený – bez typových anotací ani nenastartuje. Pydantic, knihovna pro validaci dat, na které stojí půlka AI ekosystému, je na typech závislá existenčně.
Kachna si nechala přidat typové anotace.
A Ruby? Ruby typový ekosystém je rozštěpený na dva nekompatibilní systémy – Sorbet od Stripe a oficiální RBS. Ani jeden nedosáhl masového přijetí. DHH, tvůrce Ruby on Rails, stojí na barikádě s transparentem „Typy ne!“, odmítá je, odmítá DI, odmítá v podstatě všechno, co softwarové inženýrství za posledních dvacet let považuje za osvědčenou praxi. Na RubyKaigi 2025 se oba tábory konečně pokusily najít společnou řeč a propojit Sorbet s RBS. Zda to k něčemu povede, to se teprve ukáže.
Všechny dynamické jazyky šly stejným směrem. K typům. Jedny rychleji, druhé pomaleji. Ale všechny.
My jsme to dělali od začátku
PHP má runtime typy od roku 2004, kdy vyšla verze 5. Ale cesta k plným typům nebyla přímočará. V roce 2015 se hlasovalo o skalárních typech pro PHP 7 a málem neprošly. Hlasování skončilo 108 ku 48 – jen těsně nad požadovanou dvoutřetinovou většinou. Stačily čtyři hlasy jinak a PHP by skalární typy nemělo. Říkalo se tomu „The Great Scalar Type War“ a bylo to jedno z nejdramatičtějších hlasování v historii PHP. Naštěstí rozum zvítězil.
V Nette jsme tuhle cestu razili dávno předtím, než to bylo trendy. Nette Framework měl plnou dependency injection od verze 2.0 v roce 2012. Ne jako volitelný doplněk, ale jako základ celé architektury. V době, kdy DHH prohlašoval DI za zbytečný Java pattern, my jsme kolem DI vybudovali kompletní ekosystém a napsali dokumentaci, která dodnes patří k nejsrozumitelnějším výkladům dependency injection v jakémkoliv jazyce. A edukovali jsme v tom celou českou PHP komunitu.
Nette 3.0, vydaný v dubnu 2019, se stal prvním full-stack PHP frameworkem
na světě s kompletním typovým systémem. Všechny soubory
declare(strict_types=1). Všechny parametry otypované. Všechny
návratové hodnoty. Všechny vlastnosti.
Symfony 5.0 přidal plné typy o sedm měsíců později. Laravel?
Laravel nemá strict types ani v roce 2026. A často nemá ani nativní typy samotné.
A pak tu máme PHPStan od Ondřeje Mirtese – český nástroj, který má dnes 344 milionů stažení a díky němuž je typová kontrola v PHP přísnější než v leckterém staticky typovaném jazyce. V poslední verzi PHPStan 2.0 přibyl level 10, který detekuje i implicitně typované mixed hodnoty.
Proč to zabila AI
Víte, co definitivně pohřbilo duck typing? Ne programátoři. Ne frameworky. Umělá inteligence.
Studie z roku 2025 zjistila, že 94 % chyb v kompilaci kódu generovaného jazykovými modely jsou chyby typové kontroly. Čtyřiadevadesát procent. Typový systém je záchranná síť pro kód, který jste nenapsali sami.
Když dnes sedím u Claude Code a pracuji na PHP kódu s plnými typy a PHPStanem, AI agent rozumí mému kódu. Ví, co funkce přijímá. Ví, co vrací. Ví, jaké má objekt vlastnosti. Ví, co smí a co ne. V duck-typovaném kódu by házel kostkou.
Duck typing byl vždycky prasárna. Ale aspoň prasárna, která v malém měřítku nějak fungovala. V éře, kdy AI agent generuje stovky řádků kódu denně, je to prasárna, která nefunguje ani trochu.
Takže shrnu: TypeScript pohřbil vanilla JavaScript. Python si přidal typy a 86 % vývojářů je používá. Ruby se v tom topí. A PHP? PHP má plné runtime typy, PHPStan se 344 miliony stažení a Nette, které tohle dělalo dřív, než to bylo cool.
Normálně bych teď zakončil sebeironickým odstavcem o tom, jak nikdo nemá rád chlapíka, který říká „já to říkal“. Ale víte co?
Já to říkal.
Komentáře
Svaťa #1
Jak se díváte na dynamické typy v Clojure?
Napište komentář