No LOL. Staticke typy vznikly za ucelem vykonostni optimalizace, pro jednoduchou a rychlou praci s pameti.. Navzdory tomu spousta jejich priznivcu je presvedcena, ze jejich smysl je zajistit bezchybnost aplikace a z nich potom padaji obdobne nesmyslne hlasky, ze kdyz program proleze kompilatorem, tak je hotovo.
Jako starý Pythonista musím nesouhlasit. Stačí blbá číselná konstanta (v Pythonu už je naštěstí enum), máš dvě sady číselných konstant, někdo se sekne, napíše něco podobného (našeptávání ve Vimu nebo v IDE) a chyba je na světě. To jsem bohužel viděl v praxi. A jelikož těch konstant můžeš mít desítky a jelikož to špatné číslo může nasekat paseku, která na první pohled není hned vidět, testy to pravděpodobně nevyřeší. Nehledě k tomu, že testy zcela obecně nezaručují korektnost aplikace ve všech situacích. Tady by explicitní typ a la Haskell vyřešil úplně všechno.
Dále ta Tvoje naprosto nekonstruktivní poznámka o účelu statických jazyků - jasně, u trošku inteligentnějších asemblerů (C a spol.) to není nic jiného, než přiblížení železu, jenže u moderních, dobře psaných jazyků typy pomáhají přesnému vyjadřování a kontrole korektnosti. To vidí každý, kdo zažil v akci *ML, Haskell, Rust atd. a nemá klapky na očích. Jazyky typu C mají navíc to typování úplně špatně (přetypování ukazatelů, hloupá sémantika boolovských operací). A Python, bohužel, z Céčka pár těch nesmyslů přebral (sémantika boolovských operací, před verzí 3 bylo dokonce možno porovnávat číslo a None, to byl teda nápad!)
Takže otázka nezní, co bylo původním záměrem statických jazyků, ale co přinášejí navíc a v čem samozřejmě mohou mít nevýhody. Zbytek Tvého příspěvku necituju, ale vzhledem k tomu, že explicitně zmiňuješ C, doporučuju trochu pokory a samostudia.
Jako stary pythonista bys mel vedet, ze python konstanty nema. Kdyz mas dve sady cisel a nechces aby doslo k jejich zamene, staci si je otypovat. To slo delat vzdy a enum v pythonu nedela nic jineho, je to jen preddefinovana trida za timto ucelem. Staticke typy k tomu nepotrebujes a testy ti to odhali, kdyz budou dobre, take muzes pouzit typing.
Delas tu chybu, ze si pletes obecne typy a staticke typy. Typy aby plnily svou kontrolni funkci nemusi byt staticke a ani to neni zadouci, je to omezujici a dela to program slozitejsi, rozumej nachylnejsi k chybam. Jedine plus pro staticke typy je vyssi vykon, zaplaceny vyssi slozitosti. Jazyky typu C maji slabe typovani, tvrditvze to je spatne je velmi odvazne, ale je to hezky doklad toho, ze _staticke_ typovani ma jiny ucel. Doslo by ti to rychleji, kdyby ses nasnazil mavnout rukou nad tim, proc vubec staticke typy vznikly, tento duvod nepominul. Pak bys jim neprisuzoval ucel, ktery nemaji.