Node.js a multiplexed IO obecně

čumil

Re:Node.js a multiplexed IO obecně
« Odpověď #75 kdy: 26. 04. 2017, 22:30:38 »
A co jsou workery omg
Workery? To jakoze si muzu pustit v jinem vlakne nejaky kod s uplne jinym kontextem a komunikovat s nim pres sit? A to jsi chtel zminit jako dobry priklad, jak umoznit konkurentnost?!

Nebo myslis nejaky jiny workery?
Pres jakou sit ty vole.
Workery bezej pekne na stroji, maj oddeleny namespace a posilaj si mezi sebou async zpravy. Na pozadi se nikam nic neposila do site. Spawnout worker jde taky bez site, koukni se na jednu z milionu threadovych libek jak to delaj...
Naopak, workery funguji tak jak by meli fungovat vsechny real objekty ... Paralelne a samostatne.


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Node.js a multiplexed IO obecně
« Odpověď #76 kdy: 26. 04. 2017, 22:32:07 »
Jde to snadněji pomocí uzávěru. Ale pořád je to horší než first class generátory.
...a generatory jsou o rad horsi nez kontinuace.


Zase ho strašíš další monádou?  ;D

čumil

Re:Node.js a multiplexed IO obecně
« Odpověď #77 kdy: 26. 04. 2017, 22:35:39 »
Jde to snadněji pomocí uzávěru. Ale pořád je to horší než first class generátory.
...a generatory jsou o rad horsi nez kontinuace.


Zase ho strašíš další monádou?  ;D
Se z tech monad neposer. Ostatne, neni to zadna velka magic. Z fp muzes vedet picu a stejne monady muzes spokojene aplikovat.

Re:Node.js a multiplexed IO obecně
« Odpověď #78 kdy: 26. 04. 2017, 22:38:56 »
Jasně, takže Perl je podle vás taky *****, protože má "==" a "eq"?
Nevim, Perl neznam, takze o nem nic netvrdim. Ale neprekvapilo by me, kdyby tam taky nejaka ta zhovadilost byla.

Tuto konkrétně neznalost - https://developer.mozilla.org/cs/docs/Web/JavaScript/Reference/Statements/import
Čekal bych, že Google dneska umí používat každý.
A co konkretne z toho bych nemel znat? Porad nejak nechapu pointu.

S tím rozdílem, že váš příklad provádí operaci nad stejným datovým typem. Neznalost je (a to ještě velmi slušně řečeno), pokud čekáte, že takové dělení pole stringem je v pořádku.
COZE?! Neocekavam zadne deleni stringem. Ocekavam, ze == je relace ekvivalence, tj. mj. je tranzitivni. A pokud neni obecne, tak vyjimka je maximalne jedna dve a to z VELMI dobreho duvodu (napr NaN != NaN bych jeste byl schopnej pochopit).

Re:Node.js a multiplexed IO obecně
« Odpověď #79 kdy: 26. 04. 2017, 22:42:56 »
Pres jakou sit ty vole.
Workery bezej pekne na stroji, maj oddeleny namespace a posilaj si mezi sebou async zpravy.
Ahhhh, moje chyba, myslel jsem, ze komunikuji pres sockety.

"posilaj si mezi sebou async zpravy" samo o sobe nerika nic. Muze to byt paradni vec jako v Erlangu a muze to byt zoufalost jako radobyparalelismus v Rku nebo v pythonnim multiprocessing, ktery jenom zoufale obchazi GIL.


Re:Node.js a multiplexed IO obecně
« Odpověď #80 kdy: 26. 04. 2017, 22:58:33 »
Se z tech monad neposer.


:))))

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Node.js a multiplexed IO obecně
« Odpověď #81 kdy: 26. 04. 2017, 23:06:02 »
Jde to snadněji pomocí uzávěru. Ale pořád je to horší než first class generátory.
...a generatory jsou o rad horsi nez kontinuace.
Kontinuace je univerzálnější, ale taky abstraktnější (a někdy to je dost zmatek, stačí zkusit si pro kontinuaci napsat >>=). Nejlépe se tento typ kódu píše v CSP, je to triviální a univerzální.

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #82 kdy: 26. 04. 2017, 23:09:10 »
Takže kritika Go je honění ega a kritika JS je šíření osvěty?
Ne. Ale neco jineho je kritika psychedelickych haluzi zavedeneho do jazyka bez zjevneho duvodu a kritika toho, ze neco, co neni vubec nutno pouzivat, se nenapise na dva radky, ale na tri. Mimochodem, kdyz jsme ui toho, porad jeste bych rad videl konkretni kod, ktery by implementoval to same pouziti generatoru v Pythonu a v Go. Srovnavat jednovlaknovou verzi v (cem vlastne?) s konkurentni verzi v Go je dost mimo misu.

channely nejsou nic jiného než fronty

Kód: [Vybrat]
from multiprocessing import Process, Queue
from random import random


def rand(q):
    while True:
        q.put(random())


def main():
    q = Queue(0)
    p = Process(target=rand, args=(q,))
    p.start()
    for i in range(10):
        print(q.get())
    p.terminate()

Re:Node.js a multiplexed IO obecně
« Odpověď #83 kdy: 26. 04. 2017, 23:17:20 »
Kód: [Vybrat]
from multiprocessing import Process, Queue
from random import random


def rand(q):
    while True:
        q.put(random())


def main():
    q = Queue(0)
    p = Process(target=rand, args=(q,))
    p.start()
    for i in range(10):
        print(q.get())
    p.terminate()
A timhle kodem jsi chtel demonstrovat co? Chtel jsem videt ten kod generatoru, co jde v Pythonu napsat lip nez v Go.

kimec

Re:Node.js a multiplexed IO obecně
« Odpověď #84 kdy: 26. 04. 2017, 23:18:15 »
Ahhhh, moje chyba, myslel jsem, ze komunikuji pres sockety.

"posilaj si mezi sebou async zpravy" samo o sobe nerika nic. Muze to byt paradni vec jako v Erlangu a muze to byt zoufalost jako radobyparalelismus v Rku nebo v pythonnim multiprocessing, ktery jenom zoufale obchazi GIL.

However, in the case of multi-threaded implementations, many browsers implement a structured cloning algorithm to copy the message into the receiving thread’s context

JS runtime musi predavane objekty serializovat a deserializovat. Je s tym spojeny overhead a nedokaze passnut referenciu na priamo.

Re:Node.js a multiplexed IO obecně
« Odpověď #85 kdy: 26. 04. 2017, 23:18:52 »
Jasně, takže Perl je podle vás taky *****, protože má "==" a "eq"?
Nevim, Perl neznam, takze o nem nic netvrdim. Ale neprekvapilo by me, kdyby tam taky nejaka ta zhovadilost byla.

Očividně neznáte ani JavaScript, takže mě překvapuje, že o něm něco tvrdíte. ;) (a ano, je nepříjemné, když na Perl někdo přechází, když si zvykne, tak je to hned o level výš - ono to taky souvisí s tím, k čemu byl ten jazyk určený).

Tuto konkrétně neznalost - https://developer.mozilla.org/cs/docs/Web/JavaScript/Reference/Statements/import
Čekal bych, že Google dneska umí používat každý.
A co konkretne z toho bych nemel znat? Porad nejak nechapu pointu.

To bude ten problém. Že nechápete, ne JS.

S tím rozdílem, že váš příklad provádí operaci nad stejným datovým typem. Neznalost je (a to ještě velmi slušně řečeno), pokud čekáte, že takové dělení pole stringem je v pořádku.
COZE?! Neocekavam zadne deleni stringem. Ocekavam, ze == je relace ekvivalence, tj. mj. je tranzitivni. A pokud neni obecne, tak vyjimka je maximalne jedna dve a to z VELMI dobreho duvodu (napr NaN != NaN bych jeste byl schopnej pochopit).

Tak možná by bylo dobré si uvědomit, že relace ekvivalence se provádí pro prvky ve stejné množině.

Re:Node.js a multiplexed IO obecně
« Odpověď #86 kdy: 26. 04. 2017, 23:19:18 »
JS runtime musi predavane objekty serializovat a deserializovat. Je s tym spojeny overhead a nedokaze passnut referenciu na priamo.
Aha, takze uplne stejna zoufalost jako v R :)

Re:Node.js a multiplexed IO obecně
« Odpověď #87 kdy: 26. 04. 2017, 23:22:32 »
Očividně neznáte ani JavaScript, takže mě překvapuje, že o něm něco tvrdíte. ;)
Tak porad jeste cekam na konkretni zminku o tom, co udajne nemam znat :)

Tak možná by bylo dobré si uvědomit, že relace ekvivalence se provádí pro prvky ve stejné množině.
Znovu: COZE?!

To se vazne budeme na IT serveru dohadovat o tom, co je to relace? A o tom, ze relace ekvivalence ma byt tranzitivni? WTF?!

Re:Node.js a multiplexed IO obecně
« Odpověď #88 kdy: 26. 04. 2017, 23:46:08 »
Očividně neznáte ani JavaScript, takže mě překvapuje, že o něm něco tvrdíte. ;)
Tak porad jeste cekam na konkretni zminku o tom, co udajne nemam znat :)

Odkaz jste dostal, tím můžete začít. Doporučuji si pak třeba dohledat přednášky Ondřeje Žáry pro předmět KAJ z FELu, je to hezký kurs.

Tak možná by bylo dobré si uvědomit, že relace ekvivalence se provádí pro prvky ve stejné množině.
Znovu: COZE?!

To se vazne budeme na IT serveru dohadovat o tom, co je to relace? A o tom, ze relace ekvivalence ma byt tranzitivni? WTF?!

Řekl jsem, že ekvivalence nemá být tranzitivní?! Možná se naučte číst, tím by bylo nejlepší začít.

Relace je relací ekvivalence právě když je reflexivní, symetrická a tranzitivní. Jenže zároveň je to binární relace na stejné množině. Pokud to stále nechápete, tak doporučuju navštívit 1. ročník každé slušné VŠ.

Re:Node.js a multiplexed IO obecně
« Odpověď #89 kdy: 27. 04. 2017, 00:00:20 »
Odkaz jste dostal
V tom postu jsem kritizoval právě to, co jsem si vyzkoušel, čili to znám. Kdybych to neznal, tak bych to nekritizoval.

Řekl jsem, že ekvivalence nemá být tranzitivní?! Možná se naučte číst, tím by bylo nejlepší začít.
Já kritizuju, že == v JS tranzitivní není (a to ještě strašně překombinovaným způsobem), což je překvapivé/matoucí. A jelikož (příliš) překvapující jazyky se mi nelíbí, nelíbí se mi ani JS.

Pokud chcete s něčím z toho polemizovat, řekněte, s čím polemizujete, a předlože argumenty. O tahání se za nohu s dovolením nemám zájem :)

Relace je relací ekvivalence právě když je reflexivní, symetrická a tranzitivní.
Tak jest. A podle této definice operátor ekvivalence v JS není ekvivalence. Což je překvapující, jak již řečeno.

Jenže zároveň je to binární relace na stejné množině.
Jako třeba na množině "libovolná hodnota v JS"? (nicméně pořád nechápu, kam tím míříte)

Pokud to stále nechápete, tak doporučuju navštívit 1. ročník každé slušné VŠ.
Děkuji za doporučení, to jsem už učinil před mnoha lety :)
« Poslední změna: 27. 04. 2017, 00:02:05 od Mirek Prýmek »