Problémy s JavaScript v praxi

Re:Problémy s JavaScript v praxi
« Odpověď #405 kdy: 07. 10. 2018, 14:15:07 »
Nerozumiem čo potrebuješ vysvetliť, a už vôbec nie prečo. Ponúknem ti štatistiku z real world podmienok, čo si presne chcel, ty zaargumentuješ výskumom za umelých podmienok, nie z real world, a ešte aj chceš z neznámeho dôvodu niečo vysvetliť. Nerozumiem, ale OK, napíš ktorá konkrétna časť toho pdf ti nieje jasná, alebo o ktorej konkrétne časti pochybuješ a na základe čoho pochybuješ.
Máš 2 projekty, které se každý týká něčeho jiného, jsou napsané v jiném jazyce. Jeden má silné typy, jeden má dynamické typy. Řekněme, že na SLOC jsou srovnatelné. V jednom najdeš v issue trackeru víc bugů než v druhém. Mně připadá, že z toho rozdílu ohledně náchylnosti k bugům daného paradigmatu nejde usoudit prakticky nic. Ti statistikové to dělají. Tak to zkus obhájit.

Citace
Být to pět let zpátky, tak bych ten hate na JavaScript chápal. Dneska už to ale dá opravdu práci, vyhrabat nějaký faktický, ne jen teoretický problém. A v budoucnu to bude ještě pracnější - JS komunita nasadila takové tempo, že většina ostatních jazyků oproti tomu působí jako zakleté království. To je sice možno brát i jako mínus, za mě je to ale jasně plus.
Všechny jazyky jdou dopředu, nové vlastnosti v Javě, C++, pythonu... - type inference, lepší generika atd. A v javascriptu se víc a víc používá Typescript - což je ale jiný jazyk.

Inými slovami, tvrdíš, že tá štúdia na kódoch z praxe má nulovú výpovednú logiku, lebo autor použil nevhodnú metodiku? Ok, rozviň to.

Tvrdíš, že sa čoraz viac používa TS. Ukáž čísla. Lebo ja tvrdím, že rýchlejšie pribúdajú programátori v JS, ako v TS. Čiže používa sa čoraz častejšie TS, ale nie viac ako JS. Aj preto toto:

https://medium.com/javascript-scene/you-might-not-need-typescript-or-static-types-aa7cb670a77b


bflmpsvz

Re:Problémy s JavaScript v praxi
« Odpověď #406 kdy: 07. 10. 2018, 15:29:02 »
Že vám vůbec stojí za námahu se tady dohadovat s nějakou slovenskou píčou, která nechce přijímat žádné argumenty. JS je pro něj něco jako modla, nic jiného v životě nepoznal a ani nepozná, protože tento maďar má IQ houpajícího se koně. Takové gumy je třeba ignorovat a při potkání vzít ocelovou trubkou o ten jeho molekulový mozek

andy

Re:Problémy s JavaScript v praxi
« Odpověď #407 kdy: 07. 10. 2018, 16:26:19 »
Inými slovami, tvrdíš, že tá štúdia na kódoch z praxe má nulovú výpovednú logiku, lebo autor použil nevhodnú metodiku? Ok, rozviň to.
No vždyť:
Citace
Máš 2 projekty, které se každý týká něčeho jiného, jsou napsané v jiném jazyce. Jeden má silné typy, jeden má dynamické typy. Řekněme, že na SLOC jsou srovnatelné. V jednom najdeš v issue trackeru víc bugů než v druhém. Mně připadá, že z toho rozdílu ohledně náchylnosti k bugům daného paradigmatu nejde usoudit prakticky nic. Ti statistikové to dělají.
Já vůbec netuším, co by ta čísla měla vypovídat. Takže když to staticky zagreguju, tak netuším, co by ten výsledek měl říkat....Garbage in, garbage out...

Citace
Citace
A v javascriptu se víc a víc používá Typescript.
Tvrdíš, že sa čoraz viac používa TS. Ukáž čísla. Lebo ja tvrdím, že rýchlejšie pribúdajú programátori v JS, ako v TS. Čiže používa sa čoraz častejšie TS, ale nie viac ako JS.
? Nesouhlasíš z principu?

Citace
https://medium.com/javascript-scene/you-might-not-need-typescript-or-static-types-aa7cb670a77b
Ufff... no, jak bych to řekl... no kromě toho, že autor neslyšel o row types (a moje zkušenost s row types je spíš negativní). Spíš přemýšlím, jaký je rozdíl mezy typovaným jazykem, který má kvalitně udělanou type inference a dynamickým jazykem, kdy programátor píše v IDE, které má kvalitně udělanou type inference. Obzvláště, když si přeje, aby javascript podporoval optional anotace, když inference selže. Podle mě v tom rozdíl není z hlediska kontroly typů žádný...

Ale jinak samozřejmě rozdíl je - v momentě, kdy ten kompiler začne ten typový systém využívat i pro něco víc než jen kontrolu korektnosti. To pak začnou být možné věci, které jsou bez typové kontroly jenom jeden "velký hack".

nok

Re:Problémy s JavaScript v praxi
« Odpověď #408 kdy: 07. 10. 2018, 18:03:05 »
Citace
v javascriptu se víc a víc používá Typescript - což je ale jiný jazyk.

Když si odmyslíš typy, tak je to takřka 1:1 JavaScript. No a co se týče rozšířenosti, tak marketshare JavaScriptu se počítá v procentech, zatímco u TypeScriptu je to v desetinách procent(a ty desetiny jsou tak dvě). Hype dokáže udělat z komára velblouda.

v

Re:Problémy s JavaScript v praxi
« Odpověď #409 kdy: 07. 10. 2018, 18:13:37 »
jen tak za zvědavosti, můžete někdo ukázat kus javascriptu, který be se do staticky typovaného jazyka přepsat nedal nebo jen s velkými obtížemi?


Pep

Re:Problémy s JavaScript v praxi
« Odpověď #410 kdy: 07. 10. 2018, 19:12:31 »
jen tak za zvědavosti, můžete někdo ukázat kus javascriptu, který be se do staticky typovaného jazyka přepsat nedal nebo jen s velkými obtížemi?
To záleží. Můžou se použít generika? Defaultní protokoly? Dej příklad jazyka, pak půjde odpovědět.

andy

Re:Problémy s JavaScript v praxi
« Odpověď #411 kdy: 07. 10. 2018, 19:22:29 »
Citace
v javascriptu se víc a víc používá Typescript - což je ale jiný jazyk.
Když si odmyslíš typy, tak je to takřka 1:1 JavaScript. No a co se týče rozšířenosti, tak marketshare JavaScriptu se počítá v procentech, zatímco u TypeScriptu je to v desetinách procent(a ty desetiny jsou tak dvě). Hype dokáže udělat z komára velblouda.
Ano, takže když napíšu, že typescript se používá víc a víc...a začal z nuly...? A samozřejmě tady je to hodně zkreslené tím, že JS je výrazně jednodušší než TS, takže začátečníci si zvolí celkem jasně. Ale používá se, frameworky to podporují. Třeba je to bublina, kdo ví.

Jinak ale otázka toho zda je to jiný jazyk - já nevím. Nějak mi celý ten argument (zvlášť z toho článku) linkovaného článku připadá zvláštní: Nepotřebujeme statické typy, máme linter s type inferencí, který ty typy odvodí a zkontroluje a případně vyhlásí problém. A ještě lepší by byly typové anotace, aby se případně pomohlo linteru tam, kde to odvodit nedokáže....

Jaký je teda rozdíl mezi JS+anotace+linter vs. staticky typovaný jazyk...? Pokud ten jazyk využívá ty typy pouze pro kontrolu korektnosti, tak mi to ve výsledku připadá jako naprosto identické?

v

Re:Problémy s JavaScript v praxi
« Odpověď #412 kdy: 07. 10. 2018, 19:23:17 »
jen tak za zvědavosti, můžete někdo ukázat kus javascriptu, který be se do staticky typovaného jazyka přepsat nedal nebo jen s velkými obtížemi?
To záleží. Můžou se použít generika? Defaultní protokoly? Dej příklad jazyka, pak půjde odpovědět.
to mi je jedno, zajímá mě pohled zastánců dynamických typů a zároveň si chci zkusit jak by vypadal přepis do silně typovaného jazyka (haskellu, jak jinak)

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #413 kdy: 07. 10. 2018, 19:29:15 »
Jaký je teda rozdíl mezi JS+anotace+linter vs. staticky typovaný jazyk...? Pokud ten jazyk využívá ty typy pouze pro kontrolu korektnosti, tak mi to ve výsledku připadá jako naprosto identické?

Krom odpovědi, která je evidentní, a dalších zajímavostí...

JS+anotace+linter má jednu takovou drobnou výhodu v tom, že ty typy jsou volitelné.

Ono ve výsledku to opět není rozdíl, protože ve statickém jazyce můžeš všude rvát Any, ale v praxi vlastně jde hlavně o zvyk. Podporuje to styl vývoje, kdy nejdříve naprototypuješ cosi, aby to alespoň zhruba odpovídalo tomu, co chceš. A pak přidáš typy, aby se ti to zase celé nerozpadlo.

andy

Re:Problémy s JavaScript v praxi
« Odpověď #414 kdy: 07. 10. 2018, 19:47:16 »
jen tak za zvědavosti, můžete někdo ukázat kus javascriptu, který be se do staticky typovaného jazyka přepsat nedal nebo jen s velkými obtížemi?
To záleží. Můžou se použít generika? Defaultní protokoly? Dej příklad jazyka, pak půjde odpovědět.
to mi je jedno, zajímá mě pohled zastánců dynamických typů a zároveň si chci zkusit jak by vypadal přepis do silně typovaného jazyka (haskellu, jak jinak)
Z typovaných problémů třeba Duck typing. Haskell nemá row types, takže tohle se případně dá vyřešit lensama s generováním Has. Ale   Duck typing mi připadá jak minové pole, a Row types mi přišly strašný v*s*r. Navíc jsem to fakt nikdy nepotřeboval, alternativní řešení s použitím normálních typeclass bylo vždy přehlednější. Ale možná u nějakých hodně velkých projektů určitého stylu, nevím. 

Nebo nějaké věci, které využívají drsně introspekci. Kdysi jsem si napsal knihovnu v Pyhtonu, která generuje SQL dotazy. Když se podíváš na nabídku těchto knihoven v haskellu, zjistíš, že to je vlastně všechno docela těžké na použití. Na rozdíl od toho pythonu je to "víceméně" typesafe (i.e. většinou to zabrání generování nevalidního SQL), ale ty knihovny jsou silně netriviální (a bohužel trošku netriviální i na použití, ale to možná platí i u těch netypovaných knihoven - u haskellu mě vždycky tyhle složité knihovny vyděsí....u pythonu/js to nějak nevypadá vizuálně strašidelně...)

Bacsa

Re:Problémy s JavaScript v praxi
« Odpověď #415 kdy: 07. 10. 2018, 20:10:57 »
jen tak za zvědavosti, můžete někdo ukázat kus javascriptu, který be se do staticky typovaného jazyka přepsat nedal nebo jen s velkými obtížemi?
To záleží. Můžou se použít generika? Defaultní protokoly? Dej příklad jazyka, pak půjde odpovědět.
to mi je jedno, zajímá mě pohled zastánců dynamických typů a zároveň si chci zkusit jak by vypadal přepis do silně typovaného jazyka (haskellu, jak jinak)
V Haskellu nebude problém s ničím kromě proxy.

Re:Problémy s JavaScript v praxi
« Odpověď #416 kdy: 07. 10. 2018, 21:10:01 »
jen tak za zvědavosti, můžete někdo ukázat kus javascriptu, který be se do staticky typovaného jazyka přepsat nedal nebo jen s velkými obtížemi?

Jen tak ze zvědavosti, proč? Respektive proč by něco takového mělo existovat a zároveň k čemu by ti takový případný kód byl? Asi nechápu pointu. :)

v

Re:Problémy s JavaScript v praxi
« Odpověď #417 kdy: 07. 10. 2018, 21:46:15 »
jen tak za zvědavosti, můžete někdo ukázat kus javascriptu, který be se do staticky typovaného jazyka přepsat nedal nebo jen s velkými obtížemi?

Jen tak ze zvědavosti, proč? Respektive proč by něco takového mělo existovat a zároveň k čemu by ti takový případný kód byl? Asi nechápu pointu. :)
statický typový systém je omezující, třeba heterogení kontejnery (duck typing, jak psal andy) můžou být docela zajímavá věc, přitom v dynamických jazycích je to naprostá samozřejmost... z toho vyvozuju, že některé programy, pokud bych chtěl víceméně zachovat jejich tvar, budou citelně delší a/nebo zajímavější a zajímá mě to proto, že si chci svou weapon of choice pořádně otestovat :)

v

Re:Problémy s JavaScript v praxi
« Odpověď #418 kdy: 07. 10. 2018, 21:50:38 »
jen tak za zvědavosti, můžete někdo ukázat kus javascriptu, který be se do staticky typovaného jazyka přepsat nedal nebo jen s velkými obtížemi?
To záleží. Můžou se použít generika? Defaultní protokoly? Dej příklad jazyka, pak půjde odpovědět.
to mi je jedno, zajímá mě pohled zastánců dynamických typů a zároveň si chci zkusit jak by vypadal přepis do silně typovaného jazyka (haskellu, jak jinak)
V Haskellu nebude problém s ničím kromě proxy.
tohle https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy ?

Bacsa

Re:Problémy s JavaScript v praxi
« Odpověď #419 kdy: 07. 10. 2018, 21:56:22 »
jen tak za zvědavosti, můžete někdo ukázat kus javascriptu, který be se do staticky typovaného jazyka přepsat nedal nebo jen s velkými obtížemi?
To záleží. Můžou se použít generika? Defaultní protokoly? Dej příklad jazyka, pak půjde odpovědět.
to mi je jedno, zajímá mě pohled zastánců dynamických typů a zároveň si chci zkusit jak by vypadal přepis do silně typovaného jazyka (haskellu, jak jinak)
V Haskellu nebude problém s ničím kromě proxy.
tohle https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy ?
Jo, něco takového mnohé dynamické jazyky mají a se statickým typováním se to moc rádo nemá (i když třeba Java má proxy taky).