Komentáře k článku

Typické! O maďarské konferenci mloc.js a statickém typování při vývoji webových aplikací

To je tak typické! Ptáte se co? Že po mnoha letech alibistického ujišťování se, že statické typování v JavaScriptu není vlastně nutné, že lze vše pokrýt testy, se najednou jak houby po dešti rodí desítky projektů, jichž hlavním smyslem je přivést do vývoje webových aplikací statické typování. Záměrně píšu webové aplikace a ne javascriptové, protože to co se děje, už se netýká jen JavaScriptu.

Zpět na článek

42 komentářů k článku Typické! O maďarské konferenci mloc.js a statickém typování při vývoji webových aplikací:

  1. Martin Kozák

    Perla měsíce
    „Statické typování je to, čím se liší skriptování od programování. Bez typů je kód jen hloupou sadou příkazů, bez soudržnosti a vnitřní logiky.“

    Uff, to má být co? Já si vždycky myslel, že Zdroják je určen programátorům. Věta, že statické typování je to, co odlišuje skriptování od programování rozvinutá o hlubokomyslnou úvahu, že bez typů je kód sadou příkazů bez vnitřní logiky je pravděpodobně perlou tohoto měsíce na úrovni tvrzení, že motorista je pouze řidič automobilu protože motorkáři jezdí pouze na dvou kolech.

    Jsem příznivcem toho, o čem autor píše a domnívám se, že typování je budoucnost JavaScriptu a tím i webu, ale autor je buď typový fanatik, nic o programování neví nebo se zbláznil.

    1. Martin Hassman

      Re: Perla měsíce
      Přidávám možnost, že jste třeba autorovi špatně (resp. nepřesně) porozuměl.

      1. Martin Kozák

        Re: Perla měsíce
        Máte pravdu. Bylo celkem pozdě v noci a dost mě to vyděsilo. Člověk POV v téhle úrovni přeci jen očekává spíše na soukromém blogu než na Zdrojáku.

        1. Martin Hassman

          Re: Perla měsíce
          Texty přinášející osobní názor vycházely na Zdrojáku odjakživa. Raději si zvykněte 8-)

          1. blizz

            Re: Perla měsíce
            1. „Můj milovaný CoffeeScript. Jak se zde ocitl, vždyť typy nemá? Nemá, ale ve spojení s typovými anotacemi Closure Compileru, tedy tak jak ho já používám v github.com/Steida/este, typy má.“

            JS( a dlasie jeho syntakticke nadstavby) predsa typy maju.

            Je rozdiel medzi
            2 + 2; // 4
            „2“ + 2; // „22“

            operator „+“ s kazdym typom pracuje odlisne.

            2. skryptovat sa da velmi pekne aj v silne (a staticky) typovych jazykoch (ako trebars F#) podla autora, ale asi F# nema typy lebo ich explicitne nemusi anotovat.

            1. BoneFlute

              Re: Perla měsíce
              Rozdíl mezi výrazem silně typované, a staticky typované.
              Když by to napsal (třeba) „Můj milovaný CoffeeScript. Jak se zde ocitl, vždyť staticky typovaný není? …“, tak by to prostě nebylo tak hezké vyjádření :-)

  2. Martin Kozák

    Dodatek
    A snad ještě dodám: vnitřní logiku dává kódu leccos, ale typování to opravdu není. Naschvál, kolik lidí překvapí, že tím hlavním činitelem je v tomto procesu především programátor. S blbým kódem od neschopného autora testy neudělají vůbec nic i kdyby se jich upsal a s typy to je dost podobné. Velkých teoretiků, co produkují blbý kód je mimochodem docela dost. Nemluvě o tom, že nebýt dynamicky typovaných jazyků, museli bychom si je vymyslet protože nevznikly pro nic za nic. Psát webové aplikace v Javě (dosaďte si případně svůj oblíbený typový jazyk), nejspíš by se kupříkladu skoro nikdo nedoplatil. Ostatně typované jazyky vznikly zhusta mimo jiné proto, že kompiler potřeboval při tehdejší výkonosti techniky vědět s jakýmiže daty má tu čest.

    A hádejme, co se dnes uvnitř kompilerů dynamicky typovaných jazyků děje. Ano, překvapivě si kompiler udržuje informaci o tom, jaký typ jaká proměnná obsahuje a případně provádí za programátora přetypování. On to totiž není bug, ale featura, ejhle! Třeba pro ty, kteří jsou schopni psát svůj kód dostatečně na úrovni na to, aby si mohli dovolit typy řešit jen v míře nejnezbytněji nutné.

    Napsal jsem dost kódu v různých jazycích a obojí má své určení a své výhody a nevýhody. Pojímat tedy tuto problematiku tímto způsobem je mírně řečeno velmi nešťastné.

    1. Milan Křepelka

      Re: Dodatek
      No tak ty seš tak dost dobrej ******. Samozřejmě že typování je dobra věc. Automaticky předchází problémům, zmenšuje chybovost. Psát typovým jazykem bude vždy levnější než bastlem nazývaným Javascript.

  3. Sergej

    Statické typování
    Absolutní absence typu je _právě_ to, co je výhodou JavaScriptu. Nemusím se starat o to, zda mám funkci co podporuje dané typy, nebo ne. Buď jsem blbej a pošlu tam něco, s čím si to neporadí, nebo to proběhne v naprostém pořádku. Nemusím „zbytečně“ pokaždé psát co chci za typ a ještě to rozkopírovat na 4 přetěžené funkce podle typu.

    1. Daniel Steigerwald

      Re: Statické typování
      Nejlepší je optional typing. Tam kde typy potřebuji, tam je mám. Tam kde ne, tam je nemám. Tenhle princip používá také Dart.
      Closure Compiler umí type inference, takže třeba uvnitř metod typy není třeba definovat. Anotacema chráním jen api method. Rozkopírování také není nutné, alespoň v Closure. Stačí anotace @override, ta definice typů přebere.

    2. Milan Křepelka

      Re: Statické typování
      Vtipt je v tom, že v typově založených jazycích ani blbej být nemůžeš, tudíž tam ani nic nepošlel. Osobně obhájce bastlSkriptu nechápu. Osobně se chudákům co s tím ksindlem musí pracovat směju. A to se docela často koukám do zrcadla.

  4. Ladislav Thon

    > Dart se kvapem vyvíjí. Ale má jeden problém. Není to JavaScript = neseženete na něj lidi.

    Dart není JavaScript, a proto na něj seženete lidi mnohem snáz. Dart se snadno naučí každý průměrný Javista, C#ista, PHPčkař, Rubyista, Pythonista, prostě každý, kdo měl kdy něco společného s nějakým civilizovaným objektovým jazykem založeným na třídách. JavaScript? Nenechte se vysmát.

    1. Daniel Steigerwald

      Re:
      V zásadě souhlasím. Omlouvám se, že jsem myšlenku více nerozvinul, ale tlačil mne čas. Znát jazyk nestačí. Je třeba znát i knihovny, frameworky, celý ekosystém. Dart se zkušený programátor za pár dnů naučí. Ale překlopit všechny dosavadní nástroje, postupy, atd. už zabere více času. I když dnes máme Closure, Angular, Backbone, tak spousta lidí nezná ani to.

      1. Tomas Novotny

        Re:
        Je to o mainstreamu a jednoduchosti použití. Situace je zatím taková, že Dart je možná parádní symfonie od Beethovena, ale většina si radši poslechne Madonnu (TypeScript).

        1. Ladislav Thon

          Re:
          Situace je taková, že dneska spousta lidí používá GWT, Script# a podobné, a spousta jiných lidí si stýská po Flashi/Flexu. Ono se to možná lidem z JS světa nezdá, ale takových je fakt hodně. Dart je pro takovéhle lidi první volba.

    2. Daniel Steigerwald

      Re:
      A samozejmě nemám patent na rozum, a je dost možné, že za rok budu mluvit jinak. Jen blbec se nikdy nemýlí.

      1. Ladislav Thon

        Re:
        Jasně že jo. Ale ten argument o ekosystému je skvělý — podle mne ovšem proti JavaScriptu. Včera nebo předevčírem jsem četl tenhle článek: http://www.ramen.io/post/46936028144/we-are-switching-to-dart-why Lidi od blossom.io tam vyjmenovávají, jaké JS technologie používají: CoffeeScript, Underscore, jQuery, Backbone, Brunch… Dobře, nejsou to Closure Tools ani Angular :-), ale je na tom dobře vidět, kolik věcí potřebujete v JS světě _extra_, které v Dartu dostanete automaticky. Rozumný jazyk, rozumná standardní knihovna, rozumná knihovna pro DOM, a spousta dalšího (balíčkovací systém, generátor dokumentace, relativně rozumné IDE), to všechno není třeba hledat. To dostanete hned, jak si stáhnete SDK.

        Jenže historie nás učí, že worse is better, takže jak to doopravdy bude…

  5. Velda

    Statické typování v Javascriptu
    Vždyť v JavaScriptu taky můžete psát programy se statickým typováním… V JavaScriptu jen nejste nuce to dělat a to je rozdíl od kompilovaných jazyků. Jestli přece zavarujete var a = 5. Tak proměnná a je číslo. A pokus už s proměnnou budete dále pracovat jako s číslem, tak má stále stejný typ a tím je její typ statický. Porovnávat ji pak můžete pomocí operátorů !== a === čímž zabráníte přetypovávání a máte skoro výkon aplikace se statickými proměnnými… Jen jste program nepsal tak dlouho, protože jste všude nemusel opakovat ten typ.

    Samozřejmě, že tohle je jenom nástin, co v JS jde, ale do větší šířky už to moc nejde, když mrknem třeba na string… :-) Ale tohle jednou bude umět JavaScript taky. :-)

    1. satai

      Re: Statické typování v Javascriptu
      Tak to je vazne staticky typovy system jak noha.

      Ostatne to, ze je potreba typy ve statickych typovych systemech stale opakovat je povera. Rozumnejsi jazyky (Scala, Haskell…) maji typovou inferenci. A polovinu toho, co je potreba napsat v kodu, za programatora napise IDE.
      Predstava, ze se nepsanim typu nejaky cas usetril je naprosto zcestna. Kolik procent (promile?) casu travite tim, ze skutecne mlatite do klavesnice a pisete kod, co se pak objevi na produkci?

      1. Martin Kozák

        Re: Statické typování v Javascriptu
        Nepsáním typu čas určitě neušetříme. Na druhou stranu, já za sebe tedy IDE psát svůj kód nenechávám. Stačí, že se občas musím hádat se svým okolím, nepotřebuji se tedy hádat ještě s tím, co mi má mou práci ulehčovat. Ale pravda, je to značně subjektivní.

        1. satai

          Re: Statické typování v Javascriptu
          Asi bych mel problem pouzivat IDE, kteremu se neda (v rozumne mire) verit.

  6. Peto

    nativna podpora Dartu
    Trochu mimo temy. Ale nemate info v akom stave je nativna podpora Dartu v Chromiu(Dartium)?

    1. Ladislav Thon

      Re: nativna podpora Dartu
      Není a ještě nějakou dobu nebude. Osobně bych odhadoval, že dřív než bude Dart ve verzi 1.0, se v Chromiu Dart VM neobjeví. A 1.0 bude nejdřív letos v létě, možná později.

  7. Radek Miček

    Zkracování kódu
    Bohatší typový systém pomáhá zkracovat kód: Můžeme třeba přetěžovat funkce. Například následující funkce pro parsování readInt, readIntList, readBool můžeme pojmenovat jednoduše read a psát kratší sum . read (význam: rozparsuj seznam prvků a sečti je; tečka značí skládání funkcí) místo sum . readIntList (význam: rozparsuj seznam Intů a sečti je). Tohle v tzv. dynamicky typovaných jazycích nejde.

    1. Ladislav Thon

      Re: Zkracování kódu
      Přetěžování je zlo. A samozřejmě existuje manuální dispatch, ale hádám, že o tom se ve vyšších kruzích nemluví ;-)

      1. Radek Miček

        Re: Zkracování kódu
        IMO rozumně použité přetěžování zpřehlední kód. Např.: V různých třídách / strukturách / záznamech mohu mít vlastnosti / metody / pole se stejným jménem. V jedné třídě mohu mít metody se stejným jménem. Operátorem + mohu sčítat celá čísla, čísla v plovoucí řádové čárce nebo provádět zřetězení. Samozřejmě, přetěžování může komplikovat programovací jazyk, což pak může vyústit k překvapivému chování kompilátoru nebo programu.

  8. Radek Miček

    TypeScript je hrůza
    Nepochopím, že v dnešní době někdo vytvoří typový systém bez parametrického polymorfismu (tj. bez podpory generik). Tohle se netýká jenom TypeScriptu, dalším příkladem je Go.

      1. Radek Miček

        Re: TypeScript je hrůza
        Aktuální verze TypeScriptu: 0.8.3. Odkazovaný blog je o připravované verzi 0.9. Z toho plyne, že máme zatím smůlu.

  9. Petr Prchal

    Par detailu k oprave
    Cau, pekne shrnuti, jelikoz jsem tam byl taky, dovolim si jen jednu poznamku:

    Prezi to nema napsane ve Flashi, ale pouzivaji http://haxe.org/, akorat maji v soucasne dobe nejmocnejsi kompilator prave do Flashe…

  10. Honza Marek

    Téma článku
    Pár řádků o statickém typování, pár řádků o nějaké konferenci, pak zmínka o CoffeeScriptu a TypeScriptu a na závěr pár řádků o nějaké technologii, co má šanci zabít Javu na Androidu, ale s JS nemá nic moc společného. O čem vlastně ten článek je?

  11. Jiri Musil

    Haxe
    Haxe je akademický, málo použitelný leaky abstraction projekt? Šmahem Vás odsuzuji jako ignoranta.

  12. LollaPalooza

    dart a typescript
    Steigerwalde, Steigerwalde. Ty kluku filutový.

    >> Dart se kvapem vyvíjí.

    To nemyslíš vážně. Dart je mrtvě narozené dítě. Ani vevnitř Googlu nikdo nepoužívá Dart.

    >> Problém [TypeScriptu]: Ohromná spousta již napsaného netypového kódu.

    To nemyslíš vážně, filuto. Co má TypeScript společné se „spoustou již napsaného netypového kódu?“ To je, jako bys řekl před 18 lety, že problém Javy je, že spousta kódu je napsaná v Cobolu.

    1. Daniel Steigerwald

      Re: dart a typescript
      ad Dart: Nejdřív platforma, potom aplikace v ní napsané. Obráceně to nejde. Na Dart už přecházejí firmy, např. zde http://news.dartlang.org/2013/04/why-blossom-is-switching-to-dart.html

      ad TypeScript: Asi jste přehlédl fakt, že pomocí TypeScriptu a jeho type definitions lze přidat typy k již existujícímu kódu. V článku (který jste asi nečetl) je odkaz na seznam již existujících typových definic: https://github.com/borisyankov/DefinitelyTyped Jejich ranec.

      1. Data

        Představa o nahrazení JavaScriptu něčím jako Dart je šílená asi stejně, jako argumentovat tím, že už na něj přešla celá jedna firma :-D Megalomanské sklony Google už přinesly pár zajímavých projektů, tady se ale obávám, že zůstane u zbožného přání.

  13. To ani nechtej vedet ...

    cofeescript, typescript a dart moc lidi nepouziva a stale prevlada ciste jen javascript, takze kdyz se na projektu meni lidi tak radsi ho zacit psat v cistym JS nez v nejaky hovadine co nikdo neumi, nechce se ucit a rozhodne nema cas se do toho dostavat. A jen tak mimochodem … kompilovat Javascript ??? WTF ? PROC SAKRA ? Chcu to napsat v cemkoliv a hned pustit v prohlizeci … kor kdyz se jedna opravdu ciste jen o webovou 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=7627