Co vám vadí na JavaScriptu v roce 2018?

vokurky

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #120 kdy: 26. 09. 2018, 23:36:12 »
Zdá se, že Vlado pochopil, že se zmýlil a odešel pro radu k Michalovi (viz video). ;D

To je tak, když je člověk moc teoretik a tvrdí věci, které si nevyzkouší.

Čoby, pozerám film. A ty sa zatiaľ pozri na MDN do dokumentácie na async/await, je tam zvlášť na toto upozornenie.



https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function#Simple_example

pokud myslite tuhle dokumentaci tak ta odpovida presne tomu co se tvrdilo, pokud vam prijde obvykle v debate vytahovat ten uplne posledni use case ktery je tam nazvan neco jako "truly parallel" tak tenhle use case v 99% procentech webu nikdy nepouzijete, jestli je jadro sporu vo tomhle pripadu, pak s vami bych pracovat nechtel.

standardni use casy jsou totiz dva 1) waterfall - volam nekam, prijde odpoved, pouziju ji do druhyho volani
nebo 2) volam nekam, a odpovedi na sobe nejsou zavisly, ale set tech odpovedi nasledne potrebuju cely najednou (to je to cemu se normalne v JS komunite rika parallel, projedte si si clanky pokud to nevite.
Use case 3) ten uplne posledni na MDN, je extremne nepravdepodobny ze ho kdy v beznem kodu budete nuceni pouzivat. bravo pokud delate piruetu na use casu 3, to se jen tak nevidi.


andy

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #121 kdy: 27. 09. 2018, 09:32:07 »
Tohle by mě zajímalo - mně se synchronní programování líbí. Připadá mi to značně přehlednější, jednodušší a spravovatelnější než "callback hell". Takže mě překvapuje, že někdo má jiný názor - mohl bys to rozvést?
Možná je to jednodušší a přehlednější, ale má to v časově náročnějších operacích vliv na výkon.
Představ si že máš v browseru jednovláknový synchronně zpracovávnaý skript, který přes ajax získává data/hodnoty z 20 různých zdrojů a zobrazí je v tabulce.
- synchronně: dáš volání do smyčky - zavoláš první, počkáš na výsledek, zobrazíš, zavoláš druhý.... za 20 sekund máš možná výsledek.
- asynchronně: dáš volání také do smyčky - zavoláš první a jen určíš, kdo bude nezávisle na hlavním vlákně čekat na výsledek a zobrazovat ho, zavoláš druhý... pokud bude jedno čekání na výsledek/hodnotu trvet cca sekundu jako v minulém případě, máš komplet hotovo dřív než za 1,5 sekundy 
- Spustím si na každý request thread, který bude napsaný normálně synchronně a na konci posbírám výsledky...?

Citace
callback hell resi prave uz promisy ktere vypadaji "velmi synchronne"
No...a teď ještě dodělat podporu přímo do jazyka, aby promisy nebyly vidět....a máme z toho synchronní programování, kdy mě runtime odstíní od té asynchronní části...

No a já jsem se vyjadřoval k:
Citace
async/await je stejne jen glorifikovany cukr nad promissma ktery se snazi zalibit synchronnim programatorum.
Což mi připadá, že existuje něco jako "asynchronní programátor", který "má rád" asynchronní programování (aka callback hell). Tak se ptám na důvod, protože runtime mi může bez problému (např. syntaktickým cukrem nad promisama) od callback hell odstínit a ve výsledku píšu synchronně - a připadá mi, že to není "jen glorifikovaný cukr", ale přesně to, co výrazně zjednoduší a zpřehlední kód.

agent

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #122 kdy: 27. 09. 2018, 11:26:32 »
- Spustím si na každý request thread, který bude napsaný normálně synchronně a na konci posbírám výsledky...?
Čímž popisuješ v zásadě async/await funkcionalitu v JS, což je ale vcelku nová vlastnost jazyka, nic, co by tam bylo třeba 10 let.
A docela by mě zajímalo, jak moc jednoduše si představuješ to "na konci posbírám výsledky", když na každý výsledek čekáš v samostatném threadu, který běží nezávisle na hlavním threadu, který ho spustil.

Prostě se zbytečně snažíš vnucovat synchronní filozofii do jazyka, který pro podobné úlohy preferuje asynchronní řešení.

andy

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #123 kdy: 27. 09. 2018, 11:54:22 »
- Spustím si na každý request thread, který bude napsaný normálně synchronně a na konci posbírám výsledky...?
Čímž popisuješ v zásadě async/await funkcionalitu v JS, což je ale vcelku nová vlastnost jazyka, nic, co by tam bylo třeba 10 let.
A docela by mě zajímalo, jak moc jednoduše si představuješ to "na konci posbírám výsledky", když na každý výsledek čekáš v samostatném threadu, který běží nezávisle na hlavním threadu, který ho spustil.
Nějak přethreadováno... vyjadžoval jsem se k tomu příkladu výše, a měl jsem na mysli něco, co je v podstatě ekvivalentní tomu "Promise.all", akorát prostě místo "async" by člověk napsal "forkThread...". Co říkám je, že jazyk, který je ve styku s uživatelem "synchronní", může naprosto bez problémů poskytovat primitiva na to, aby člověk tu výše uvedenou funkcionalitu bez problému implementoval.
Citace
Prostě se zbytečně snažíš vnucovat synchronní filozofii do jazyka, který pro podobné úlohy preferuje asynchronní řešení.
Ne, já se ptám, jak někdo může považovat "async" za lepší než "sync by default". Co ho k tomu vede. Mně připadá callback programování naprosto příšerný paradigma na cokoliv. A vůbec mi nejde o to, jak je to implementovaný uvnitř, ale o to, co píše "uživatel" toho jazyka (naopak, uvnitř to může dávat docela velký smysl).

Puff

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #124 kdy: 27. 09. 2018, 12:01:04 »
- Spustím si na každý request thread, který bude napsaný normálně synchronně a na konci posbírám výsledky...?
Čímž popisuješ v zásadě async/await funkcionalitu v JS, což je ale vcelku nová vlastnost jazyka, nic, co by tam bylo třeba 10 let.
A docela by mě zajímalo, jak moc jednoduše si představuješ to "na konci posbírám výsledky", když na každý výsledek čekáš v samostatném threadu, který běží nezávisle na hlavním threadu, který ho spustil.
Nějak přethreadováno... vyjadžoval jsem se k tomu příkladu výše, a měl jsem na mysli něco, co je v podstatě ekvivalentní tomu "Promise.all", akorát prostě místo "async" by člověk napsal "forkThread...". Co říkám je, že jazyk, který je ve styku s uživatelem "synchronní", může naprosto bez problémů poskytovat primitiva na to, aby člověk tu výše uvedenou funkcionalitu bez problému implementoval.
Citace
Prostě se zbytečně snažíš vnucovat synchronní filozofii do jazyka, který pro podobné úlohy preferuje asynchronní řešení.
Ne, já se ptám, jak někdo může považovat "async" za lepší než "sync by default". Co ho k tomu vede. Mně připadá callback programování naprosto příšerný paradigma na cokoliv. A vůbec mi nejde o to, jak je to implementovaný uvnitř, ale o to, co píše "uživatel" toho jazyka (naopak, uvnitř to může dávat docela velký smysl).
Ideální je mít např. toto:
Kód: [Vybrat]
let sock = createSocket(...)
let data = readFromSocket(sock)
processData(sock)
s tím, že readFromSocket je vnitřně asynchronní (NIO), takže scheduler kooperativně přepne na jinou korutinu ("zelené" vlákno), než má k dispozici nějaká data ke čtení. Uživatel je odstíněn od zmatečných awaitů a NIO řeší transparentně knihovna (a runtime).


andy

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #125 kdy: 27. 09. 2018, 12:31:23 »
Ideální je mít např. toto:
Kód: [Vybrat]
let sock = createSocket(...)
let data = readFromSocket(sock)
processData(sock)
s tím, že readFromSocket je vnitřně asynchronní (NIO), takže scheduler kooperativně přepne na jinou korutinu ("zelené" vlákno), než má k dispozici nějaká data ke čtení. Uživatel je odstíněn od zmatečných awaitů a NIO řeší transparentně knihovna (a runtime).
Přesně tak. Takže mě překvapilo, že nějací "asynchronní programátoři" považují zřejmě ty callbacky za lepší řešení ... a snažím se dopídit proč....

Puff

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #126 kdy: 27. 09. 2018, 13:05:31 »
Ideální je mít např. toto:
Kód: [Vybrat]
let sock = createSocket(...)
let data = readFromSocket(sock)
processData(sock)
s tím, že readFromSocket je vnitřně asynchronní (NIO), takže scheduler kooperativně přepne na jinou korutinu ("zelené" vlákno), než má k dispozici nějaká data ke čtení. Uživatel je odstíněn od zmatečných awaitů a NIO řeší transparentně knihovna (a runtime).
Přesně tak. Takže mě překvapilo, že nějací "asynchronní programátoři" považují zřejmě ty callbacky za lepší řešení ... a snažím se dopídit proč....
To je jak s placatozemcema, ti taky věří neskutečné kravině a nemá smysl pídit se po důvodu. Jejich nejlepším "argumentem" je "We have supporters all around the globe"...

Mlocik97m

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #127 kdy: 27. 09. 2018, 17:32:19 »
Ja JS považujem za jeden z najlepšich jazykov popri jazykoch ako sú Scala, či Go

agent

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #128 kdy: 27. 09. 2018, 18:09:52 »
Přesně tak. Takže mě překvapilo, že nějací "asynchronní programátoři" považují zřejmě ty callbacky za lepší řešení ... a snažím se dopídit proč....
To je jen o zvyku.
Lopata se snaží vše (JS, TSQL, Powershell,...) přepsat jako sekvenci synchronních operací, protože to zná, to se kdysi naučil, programátor se snaží pochopit princip jazyka, obejít jeho nedostatky a využít jeho výhody.

andy

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #129 kdy: 27. 09. 2018, 18:30:08 »
Přesně tak. Takže mě překvapilo, že nějací "asynchronní programátoři" považují zřejmě ty callbacky za lepší řešení ... a snažím se dopídit proč....
To je jen o zvyku.
Lopata se snaží vše (JS, TSQL, Powershell,...) přepsat jako sekvenci synchronních operací, protože to zná, to se kdysi naučil, programátor se snaží pochopit princip jazyka, obejít jeho nedostatky a využít jeho výhody.
Ten thread se jmenuje "Co vám vadí na JS 2018" - tak mě třeba vadí tohle. A ptám se tady, jestli by mi někdo vysvětlil, proč by někdo preferoval "callback hell" před tím, co psal Puff - protože se tady někdo vyjadřoval hrdě o tom, že async/await, které tím směrem míří, jen jen "glorifikovaný cukr pro synchroníí programátory" A místo odpovědi se dozvím něco o lopatách....? Mně by fakt zajímala odpověď a ne hrdé chvástání, jak je někdo geniální, že se dokáže v těch callbacích neztratit.

tralala

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #130 kdy: 27. 09. 2018, 18:39:51 »
Vlado ty uz nepis nikam nic :D

Kit

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #131 kdy: 27. 09. 2018, 18:44:34 »
Ja JS považujem za jeden z najlepšich jazykov popri jazykoch ako sú Scala, či Go

Zkus i Lisp, možná budeš příjemně překvapen.

Hmmm

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #132 kdy: 28. 09. 2018, 08:31:02 »
Přesně tak. Takže mě překvapilo, že nějací "asynchronní programátoři" považují zřejmě ty callbacky za lepší řešení ... a snažím se dopídit proč....
To je jen o zvyku.
Lopata se snaží vše (JS, TSQL, Powershell,...) přepsat jako sekvenci synchronních operací, protože to zná, to se kdysi naučil, programátor se snaží pochopit princip jazyka, obejít jeho nedostatky a využít jeho výhody.
Ten thread se jmenuje "Co vám vadí na JS 2018" - tak mě třeba vadí tohle. A ptám se tady, jestli by mi někdo vysvětlil, proč by někdo preferoval "callback hell" před tím, co psal Puff - protože se tady někdo vyjadřoval hrdě o tom, že async/await, které tím směrem míří, jen jen "glorifikovaný cukr pro synchroníí programátory" A místo odpovědi se dozvím něco o lopatách....? Mně by fakt zajímala odpověď a ne hrdé chvástání, jak je někdo geniální, že se dokáže v těch callbacích neztratit.
Tiez tomu trochu nerozumiem. Myslel som, ze je jasne, ze callback hell je uz minulost, pretoze tu mame prinajmensom Promises, ktore to cele zprehladnuju. A potom async/await, ktory... no neviem, este som ho velmi nemal sancu pouzit, ale na prvy pohlad mi pripada ako syntax sugar nad Promises.

Ffff

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #133 kdy: 28. 09. 2018, 10:42:21 »
Bylo by velmi smutne, kdyby se tento jazyk navrzeny za 10 dni rozsiril mimo browsery.

tuz

Re:Co vám vadí na JavaScriptu v roce 2018?
« Odpověď #134 kdy: 28. 09. 2018, 11:36:20 »
Bylo by velmi smutne, kdyby se tento jazyk navrzeny za 10 dni rozsiril mimo browsery.

V tom pripade by jsi mel smutit uz tak 5-6 let protoze se uz rozsiril. JS je naprosto v pohode a skvely jazyk, akorat mu spatne jmeno delaji prasata co maji dojem, ze umi kodit. Ale to plati obecne pro kazdy jazyk, akorat JS je pro mnoho lidi tim prvnim jazykem.