Komentáře k článku

Dart Typesystem

Ľudia zvyknutí na Java, C#, či C++ ohŕňajú nosom nad tým, že Dart je dynamicky typovaný. Ľudia odchovaní na Pythone, Javascripte či Ruby ohŕňajú nosom nad tým, že Dart to s podporou dynamických features príliš nepreháňa. Ľudia obľubujúci Dart nosom neohŕňajú a Dart-ovský typesystem pokladajú za najlepší vynález hneď po krájanom chlebe. O čom táto kontroverzia vlastne je, a ako to celé funguje?

Zpět na článek

4 komentářů k článku Dart Typesystem:

  1. Honza

    Feeder by mel byt subtype vsech feederu pro jakykoli konkretni zvire, cili Feeder is CatFeeder a zaroven Feeder is DogFeeder atd. Vyznam „subtype“ relace se obecne da chapat jako zastupitelnost, tzn. subtype se da pouzit vsude, kde je ocekavan supertype. Konkretne u Feederu, obecnejsi Feeder ktery umi nakrmit libovolny zvire, muze byt pouzit kdekoli se ocekava catFeeder, protoze zvlada nakrmit cokoli vcetne kocek. Tim padem Feeder is catFeeder.

    Kovariance a kontravariance nejdou zadny vedecky pojmy, i takovy mainstreamovy jazyky jako C# nebo Java podporujou variance annotations pro typovy parametry. Ono by to bez nich ve staticky typovanym jazyce totiz moc dobre neslo.

    Jakozta fanouska Scaly by me zajimalo, co konkretne se v typovym systemu Scaly nepodarilo vyresit a bylo prohlaseno za feature. Ze Scala, stejne jako cokoli jinyho, neni dokonala, je jasny. Ale co se tyce zrovna typovyho systemu, tam mi prijde jako jeden z nejdomyslenejsich jazyku vubec vedle Haskellu apod. Proc je Set invariantni je vysvetleno tady http://stackoverflow.com/questions/676615/why-is-scalas-immutable-set-not-covariant-in-its-type, TLDR aby Set mohla byt pouzivana jako funkce z typu prvku do bool. Mozna to neni uplne intuitivni, ale to jeste neznamena, ze to je spatne.

    1. Tomáš KulichAutor příspěvku

      Re:
      Samozrejme, je to aj otazka chuti. Typesystem pokladam za dobry vtedy, ked co najviac kodov o ktorych viem, ze su spravne (z hladiska pomyselnej dynamickej interpretacie) su dobre aj z hladiska kontroly typov a naopak, ked padajuce kody su oznacene za nespravne. Moja osobna preferencia je: som ochotny akceptovat neodhalenie chyby (kopu tazkych chyb aj tak ziadny typesystem nezachyti), neznasam ale bojovanie s typesystemom, aby laskavo „zozral“ moj spravny kod.

      Ako k invariancii ImutSetu pristupi koder, ktory sa snazi funkcii akceptujucej ImutSet podsunut ako parameter ImutSet? Z pohladu kodera je vsetko OK, ale typesystem mu to patricne osladi. Toto tazko predavat ako feature.

      Spomenute vysvetlenie poznam, chapem ho vsak skor ako vysvetlenie v style „spravili sme takyto tradeoff, lebo hocico ine by bolo este horsie“.

      Vobec netvrdim ze podobne veci robia z typesystemu Scaly nepouzitelny mess, len sa mi nezda dokonaly, to je cele.

    2. Radek Miček

      Re:

      Jakozta fanouska Scaly by me zajimalo, co konkretne se v typovym systemu Scaly nepodarilo vyresit a bylo prohlaseno za feature.

      Slabá typová inference.

      Ale co se tyce zrovna typovyho systemu, tam mi prijde jako jeden z nejdomyslenejsich jazyku vubec vedle Haskellu apod.

      Co to znamená nejdomyšlenější? Třeba bezpečný printf tam nenapíšete (počet a typy parametrů závisí na hodnotě prvního argumentu, což Scala neumí popsat).

      1. Honza

        Re:

        Slabá typová inference.

        Ano, neni tak silna jak by teoreticky byt mohla (typy parametru funkci, return type rekurzivni funkce), ale nemyslim si, ze by to bylo prohlasovano za feature.

        Co to znamená nejdomyšlenější? Třeba bezpečný printf tam nenapíšete (počet a typy parametrů závisí na hodnotě prvního argumentu, což Scala neumí popsat).

        Domyslenosti jsem myslel to, ze neobsahuje ruzne nekonzistence, vyjimky nebo vylozene nesmysly. Existuji i jazyky, ktere jsou na tom jeste lepe a podporuji i vami zminovane dependent types, ale ty povazuju spis za akademicke/experimentalni a rozhodne bych si v nich, narozdil od Scaly, netroufnul vyvijet komercni aplikaci.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=10355