Hlavní navigace

Názor ke článku LISP vs. XML od zoul - „V Pythonu můžeš napsat na začátek funkce /...

  • 16. 10. 2006 11:12

    zoul (neregistrovaný)

    „V Pythonu můžeš napsat na začátek funkce / metody assert(isinstan­ce(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.“

    To je ale nejspíš pracnější než statická typová kontrola? Statické typové kontrole se navíc dá mnohem hůř vyhnout (= feature).

    „A co hůř, kontrola při kompilaci dává leda falešný pocit bezpečí.“

    To přeci nemůžeš myslet vážně…

    „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á.“

    Nikdo neříká, že statická typová kontrola řeší všechno. Když najdeš jeden protipříklad, neznamená to přeci, že je statická kontrola typů k ničemu.

    „Když je těch parametrů 10 a všechny stejného typu, tak se z toho opupínkuješ“

    Nevím jak v C, ale v Javě většina těch parametrů nebývá primitivního typu (int, char, …), takže když člověk něco přehodí, přijde se na to. Krom toho se v Javě většinou předávají vyšší typy, takže těch parametrů ani zdaleka není tolik.

    „Python i Lisp na to mají keyword parametry, které jsou podle mě ve spojení s rozumnými názvy tou nejlepší primární kontrolou.“

    No, to konečně zní jako odpověď. Jenže dost často přichází v úvahu několik různých podob téhož parametru, takže i když se pojmenované parametry postarají o správnost pořadí, typově to ještě pořád nemusí klapnout, ne?

    Já neříkám, že jsou jazyky bez statické typové kontroly k ničemu (mám moc rád Perl :), ale rozhodně bych netvrdil, že statická typová kontrola dává „leda falešný pocit bezpečí˝. A taky by mě zajímalo, jestli [a proč] s tím v Lispu u větších projektů nejsou problémy.

  • Diskuse byla uzavřena.