Node.js a multiplexed IO obecně

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Node.js a multiplexed IO obecně
« Odpověď #45 kdy: 26. 04. 2017, 10:06:04 »
S bluebirdem bych to zapsal asi takto:

Kód: [Vybrat]
Promise.map(urls, getJSON).each(j => addToPage(j.html));

Je to stejně dlouhé jako vaše řešení v purescriptu.
...což bude nejspíš tím, že Promise je instance monády, akorát se to nesmí říkat, aby to javascriptaře neděsilo ;)
Nestraš  :P

Ale teď vážně, co je "instance monády"? Řekl bych, že "promise je monáda", je v tom něco hlubšího nebo jde jen o přešlap v terminologii?


Re:Node.js a multiplexed IO obecně
« Odpověď #46 kdy: 26. 04. 2017, 12:17:24 »
Ale teď vážně, co je "instance monády"? Řekl bych, že "promise je monáda", je v tom něco hlubšího nebo jde jen o přešlap v terminologii?
Chtěl jsem zdůraznit (pro javascriptaře), že ten Promise v JS je jednou z instancí obecného konceptu "monáda". "Promise je monáda" je terminologicky správnější - stejně jako "sčítání nad celými čísly je grupa", akorát to může někoho zmýlit - může si myslet, že když umí sčítat, tak pochopil, co je to grupa, a když umí použít Promise, tak ví, co je to monáda :)

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Node.js a multiplexed IO obecně
« Odpověď #47 kdy: 26. 04. 2017, 12:22:19 »
Ale teď vážně, co je "instance monády"? Řekl bych, že "promise je monáda", je v tom něco hlubšího nebo jde jen o přešlap v terminologii?
Chtěl jsem zdůraznit (pro javascriptaře), že ten Promise v JS je jednou z instancí obecného konceptu "monáda". "Promise je monáda" je terminologicky správnější - stejně jako "sčítání nad celými čísly je grupa", akorát to může někoho zmýlit - může si myslet, že když umí sčítat, tak pochopil, co je to grupa, a když umí použít Promise, tak ví, co je to monáda :)
Nesouhlasím, ale nebudu rejpat (slovíčkařit)  ;)

Re:Node.js a multiplexed IO obecně
« Odpověď #48 kdy: 26. 04. 2017, 15:14:25 »
Nesouhlasím, ale nebudu rejpat (slovíčkařit)  ;)
Nehádal bych se s tebou, vím, že je to špatně. Stejně jako pes není instance savce, ale pes je savec :)

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #49 kdy: 26. 04. 2017, 17:25:56 »
S bluebirdem bych to zapsal asi takto:

Kód: [Vybrat]
Promise.map(urls, getJSON).each(j => addToPage(j.html));

Je to stejně dlouhé jako vaše řešení v purescriptu.
...což bude nejspíš tím, že Promise je instance monády, akorát se to nesmí říkat, aby to javascriptaře neděsilo ;)

Mě neděsí nic. Jen si nechci komplikovat život používáním jazyka kompilovaného do JS s malou komunitou a nejistou budoucností. Vaši hlavní výhradu k JS - neexistenci vláken, to stejně neřeší.


Re:Node.js a multiplexed IO obecně
« Odpověď #50 kdy: 26. 04. 2017, 18:16:16 »
Vaši hlavní výhradu k JS - neexistenci vláken, to stejně neřeší.
Když už, tak: moje hlavní výhrada vůči JS je, že to je neuvěřitelně splácaný jazyk, který je snad vůbec nejvíc nepředvídatelný ze všech, co jsem kdy viděl. Pokud někdo hodlá JS obhajovat, ať prvně srovná třeba s Lua, to je jazyk podobného typu, ale udělaný dobře, koncepčně (nemusí se mi líbit, nemusí mi vyhovovat, ale má logiku a jasnou myšlenku).

WTF vtípků ohledně nelogičností JS je plný net, ale vlastní zkušenost je k nezaplacení:
Citace
Mám prostě neutuchající pocit, že vývojáři Javascriptu mají obzvláštní talent vymlet úplně každý výmol, který se na cestě nachází - i kdyby to měli vzít oklikou, aby do něj najeli.
https://plus.google.com/+MiroslavPrymek/posts/euSuscZtbyj

(nehodlám startovat flejm, jenom uvádím na pravou míru, že neexistence rozumné konkurentnosti fakt není ani zdaleka největší problém JS)
« Poslední změna: 26. 04. 2017, 18:18:57 od Mirek Prýmek »

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #51 kdy: 26. 04. 2017, 18:54:53 »
Chování je přesně definované, nemusíte ho považovat za logické. Stačí se ho naučit za zlomek času, který strávíte přechodem na jiný jazyk. Z dlouhodobého hlediska to vaši produktivitu nijak nesníží i kdyby to bylo nelogické. Osobně považuji importy celkem za zbytečné, jsou nutné asi hlavně pro lepší fungování IDE.

Re:Node.js a multiplexed IO obecně
« Odpověď #52 kdy: 26. 04. 2017, 19:50:25 »
Chování je přesně definované
Jistě. Například operátor == je "přesně definován" tak, že "nemusí" být tranzitivní. Proč přecházet na jazyk, kde == je tranzitivní, když se stačí naučit navzpaměť případy, kdy == v JS tranzitivní není. A to se, Horste, vyplatí!

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #53 kdy: 26. 04. 2017, 20:13:36 »
Chování je přesně definované
Jistě. Například operátor == je "přesně definován" tak, že "nemusí" být tranzitivní. Proč přecházet na jazyk, kde == je tranzitivní, když se stačí naučit navzpaměť případy, kdy == v JS tranzitivní není. A to se, Horste, vyplatí!

Používejte === a ruční konverzi když si nejste jistý.

Já zde netvrdím, že je JS dokonalý jazyk, ale vám na jednu stranu vadí maličkosti v JS a na druhou stranu obhajujete Go, kde vám různé speciální případy a nedokonalosti jazyka skutečně komplikují život.

Re:Node.js a multiplexed IO obecně
« Odpověď #54 kdy: 26. 04. 2017, 20:22:59 »
Používejte === a ruční konverzi když si nejste jistý.
Vymyslel jsem lepsi reseni: nepouzivam JavaScript :)

ale vám na jednu stranu vadí maličkosti v JS a na druhou stranu obhajujete Go, kde vám různé speciální případy a nedokonalosti jazyka skutečně komplikují život.
Ze v jazyce funguji veci naprosto neocekavatelnym zpusobem neni malickost, ale zcela zasadni showstopper, pokud clovek nechce zesilet.

O jakych konkretne "speciálních případech" a "nedokonalostech" se bavime u Go? BTW, neni pravda, ze bych ho obhajoval - nepouzivam ho aktivne a na muj vkus je to jazyk prilis jednoduchy, ale aspon ma (stejne jako ta Lua) svou logiku, ktera se da pochopit bez toho, aby si clovek zoufalosti vytrhal vsechny vlasy (specialita JS a C++) a ma velice user-friendly vyresenou konkurentnost, coz je aspon respektuhodne, kdyz uz nic jinyho.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Node.js a multiplexed IO obecně
« Odpověď #55 kdy: 26. 04. 2017, 20:42:55 »
Používejte === a ruční konverzi když si nejste jistý.
Vymyslel jsem lepsi reseni: nepouzivam JavaScript :)

ale vám na jednu stranu vadí maličkosti v JS a na druhou stranu obhajujete Go, kde vám různé speciální případy a nedokonalosti jazyka skutečně komplikují život.
Ze v jazyce funguji veci naprosto neocekavatelnym zpusobem neni malickost, ale zcela zasadni showstopper, pokud clovek nechce zesilet.

O jakych konkretne "speciálních případech" a "nedokonalostech" se bavime u Go? BTW, neni pravda, ze bych ho obhajoval - nepouzivam ho aktivne a na muj vkus je to jazyk prilis jednoduchy, ale aspon ma (stejne jako ta Lua) svou logiku, ktera se da pochopit bez toho, aby si clovek zoufalosti vytrhal vsechny vlasy (specialita JS a C++) a ma velice user-friendly vyresenou konkurentnost, coz je aspon respektuhodne, kdyz uz nic jinyho.
Jen tak pro informaci: http://www.i-programmer.info/news/150-training-a-education/10716-stanford-cs-moves-to-javascript.html

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #56 kdy: 26. 04. 2017, 20:56:30 »

Re:Node.js a multiplexed IO obecně
« Odpověď #57 kdy: 26. 04. 2017, 20:57:50 »
Používejte === a ruční konverzi když si nejste jistý.
Vymyslel jsem lepsi reseni: nepouzivam JavaScript :)

Takže vlastně říkáte, že porovnáváte věci různého datového typu, ale přijde vám to v pohodě a může z to JavaScript.

WTF vtípků ohledně nelogičností JS je plný net, ale vlastní zkušenost je k nezaplacení:
Citace
Mám prostě neutuchající pocit, že vývojáři Javascriptu mají obzvláštní talent vymlet úplně každý výmol, který se na cestě nachází - i kdyby to měli vzít oklikou, aby do něj najeli.
https://plus.google.com/+MiroslavPrymek/posts/euSuscZtbyj

Takže opět, vaši neznalost vydáváte za chybu JS. Ano, vtípků o JS je plný net, ale opět, v drtivé většině případů to vychází z neznalosti autorů. Jak jinak interpretovat to, že JavaScriptu vyčítají to, co vrací na [] == {}, apod. To, že jazyk něco *umožňuje*, neznamená, že je dobrý nápad to dělat. ;)

To je jako vyčítat Perlu, že se v něm dá kód snadno prasit. Když to neumím, tak v tom nepíšu. Ale chlubit se tím veřejně...

Když už, tak: moje hlavní výhrada vůči JS je, že to je neuvěřitelně splácaný jazyk, který je snad vůbec nejvíc nepředvídatelný ze všech, co jsem kdy viděl.

A PHP znáte?

####################

Dodatek - I když to tak možná nevypadá, tak JS mě spoustou věcí štve/nesedí či spousta věcí okolo něj. Ale nelíbí se mi, když někdo něco kritizuje na základě své nevědomosti.
« Poslední změna: 26. 04. 2017, 21:02:25 od Cikáda »

Re:Node.js a multiplexed IO obecně
« Odpověď #58 kdy: 26. 04. 2017, 21:23:24 »
Jen tak pro informaci: http://www.i-programmer.info/news/150-training-a-education/10716-stanford-cs-moves-to-javascript.html
Ve skutecnosti zacinali s Karlem ;) http://web.stanford.edu/class/cs106a/lectures.shtml

(BTW, ten nadpis nejspis klame, "CS 106A" zjevne porad existuje, jenom k nemu je nova alternativa "CS 106J")

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #59 kdy: 26. 04. 2017, 21:27:24 »
O jakych konkretne "speciálních případech" a "nedokonalostech" se bavime u Go? BTW, neni pravda, ze bych ho obhajoval - nepouzivam ho aktivne a na muj vkus je to jazyk prilis jednoduchy, ale aspon ma (stejne jako ta Lua) svou logiku, ktera se da pochopit bez toho, aby si clovek zoufalosti vytrhal vsechny vlasy (specialita JS a C++) a ma velice user-friendly vyresenou konkurentnost, coz je aspon respektuhodne, kdyz uz nic jinyho.

věci, které jsou jinde triviální se v Go musí řešit copy pastováním 10+ řádků.

řešili jsme tu generátory

http://www.golangpatterns.info/concurrency/generators

ve všech moderních jazycích by to bylo na dva řádky. Při čtení toho kódu potom těžko odlišujete mezi boilerplatem a podstatnými částmi. Přijde mi, že je to jazyk pro hipstery co se holí břitvou a jezdí na kole bez brzd.