Vlákno názorů k článku Programovací jazyky určené pro výuku programování od Vít Šesták (v6ak) - Ačkoli se to na první pohled nemusí zdát,...

  • Článek je starý, nové názory již nelze přidávat.
  • 21. 7. 2010 20:25

    Vít Šesták (v6ak)

    Ačkoli se to na první pohled nemusí zdát, Scala je rozhodně staticky typovaným jazykem. Používá totiž type inference (odvození typu), které na první pohled vypadá jako dynamické typování, ale ve skutečnosti se v době kompilace zjišťuje datový typ. Jednoduchý příklad:
    var foo = „Hello“; // Že jde o String lze odvodit
    Nevím, jak přesně dopadne toto:
    var foo = „Hello“;
    foo = 5;
    Dost možná v takovém případě bude foo typu Object (nejbližší společný typ obou typů) a nepůjde na něm volat substr apod.
    Následující kód zcela jistě selže při kompilaci:
    var foo = „Hello“; // do Foo musí jít přiřadit String
    foo.length(); // na Foo musí jít zavolat java.lang.Strin­g.length()
    foo = 5; // do foo musí jít přiřadit int, Integer, float nebo něco takového
    Nevím, jak to přesně dopadne ve Scale, ale silně pochybuji, že by Scala takový kód zkompilovala, protože je typovaná staticky.
    O statickém typování Scaly vypovídá ostatně již to, že u parametrů a v případě rekurze i návratového typu je nutné uvést datový typ, jinak by se totiž blbě inferovalo před vlastním spuštěním.
    Vím, že článek je to již starší, já se k němu bohužel dostal až teď. Snad to autor opraví.

  • 22. 7. 2010 13:12

    Pavel Tišnovský
    Zlatý podporovatel

    Mate pravdu, ja jsem (asi hodne zkratkovite) mel na mysli prave typovou inferenci, kde se Scala chova (vetsinou) jakozto dynamicky typovany jazyk. Necham to opravit, diky za upozorneni.