Ale jistě, že se mi to stalo. Jenže když pomineme skutečně beztypové jazyky, tak existuje dost mechanismů, jak to zkontrolovat, když je třeba. V Pythonu můžeš napsat na začátek funkce / metody assert(isinstance(parameter, MyClass)) nebo si pro testovací účely pomoci nějakým dekorátorem. V CL by jistě bylo možné použít nějaké makro nebo si ohackovat reader, případně snad s použitím CLOS použít podobnou techniku jako v tom Pythonu.
Zfailovaný malloc() podle mě v současné době není problém programátora, ale OOM killeru a dalších mrch a v Lispu se jaksi přímo ani malloc() v programu nevolá, že ano. Nevydařené otevření souboru NIJAK nesouvisí s problémem detekce nesprávného typu ve fázi kompilace.
A co hůř, kontrola při kompilaci dává leda falešný pocit bezpečí. Pokud zavolám setWindowSize(x, y) a prohodím parametry, kompilátor neřekne ani popel, protože posílám 2 inty, jak očekává. Když je těch parametrů 10 a všechny stejného typu, tak se z toho opupínkuješ, zvlášť, když tam kolega přidá volitelný parametr a neupdatuje to všude v kódu. Python i Lisp na to mají keyword parametry, které jsou podle mě ve spojení s rozumnými názvy tou nejlepší primární kontrolou.
createFamily(
father = 'Josef',
mother = 'Ivana',
child = 'Pepíček')
Pokud v Lispu všude posíláš data v jednom parametru typu ("Josef" "Ivana" ("Pepíček" "Andulka") ("Alík" "Micinka") ('Audi 'Porsche) ("Politických vězňů 131" "Praha 1" "11000" ("0609363600" "0800123456"))), riziko se zvyšuje a čitelnost snižuje, ale nikdo Tě k tomu nenutí.
Přečteno 7 656×
Přečteno 5 849×
Přečteno 5 821×
Přečteno 5 806×
Přečteno 5 651×