Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: oss 25. 09. 2018, 08:13:17
-
Ahojte,
je tu plno tem na rozne jazyky a mna zaujima
co vam vadi na javascripre v roku 2018? Teda na jeho sucasnom stave.
-
Nejvíc mi vadí "komunita". Strašně rychle přechází z jednoho nástroje/frameworku/čehokoliv na něco jiného, apod., protože původní řešení není dost "in" a "cool". To tomu, jinak pěknému, jazyku škodí. (snažím se psát co nejvíc vanilla, protože na půlku nástrojů není spoleh)
Ono se to časem spraví. Holt je to daň za relativně rychlý vývoj. :)
-
Co mi na javascriptu vadí? Javascript.
-
Tohle vzniklo nekdy v roce 2002.... a porad je to pravda: http://old.decky.cz/data/js.htm
:-p
-
Tohle vzniklo nekdy v roce 2002.... a porad je to pravda: http://old.decky.cz/data/js.htm
:-p
Rád si nechám poradit v čem by šli udělat event handlery na interaktivní manipulaci se SVG elementy, když ne JavaScriptem.
Tady se opět strhává diskuze jen proto, že někdo stále nechce pochopit, že polévku jím lžící a maso řežu nožem.
Ano viděl jsem na vojně "universály" co sežrali cokoli jen pomocí lžíce(i špagety).
Já si nářadí vybírám dle toho co chci dělat. A Javascript má stále své důležité místo.
-
Tohle vzniklo nekdy v roce 2002.... a porad je to pravda: http://old.decky.cz/data/js.htm
:-p
Rád si nechám poradit v čem by šli udělat event handlery na interaktivní manipulaci se SVG elementy, když ne JavaScriptem.
Tady se opět strhává diskuze jen proto, že někdo stále nechce pochopit, že polévku jím lžící a maso řežu nožem.
Ano viděl jsem na vojně "universály" co sežrali cokoli jen pomocí lžíce(i špagety).
Já si nářadí vybírám dle toho co chci dělat. A Javascript má stále své důležité místo.
To, ze na urcitou cinnost existuje jeden jediny nastroj, jeste neznamena, ze neni nahovno...
-
Co mi na javascriptu vadí? Javascript.
Lip bych to nerekl.
-
To, ze na urcitou cinnost existuje jeden jediny nastroj, jeste neznamena, ze neni nahovno...
mluv za sebe, pro mne je to perfektní nástroj
-
Mne na ňom nevadí nič. JS, Node a Vue mi sadlo najviac.
-
Na Javascriptu mi nejvíc vadí, že mnoho vývojářů ho používá chybně.
-
Na Javascriptu mi nejvíc vadí, že mnoho vývojářů ho používá chybně.
Za mňa bod. A to sú tí, čo naň najviac nadávajú.
-
Hloupa reprezentace cisel.
-
Mne osobne vadi, ze hnusny zaklad sa lepia pomerne dobre veci, ale tym zakladom je to skazene.
Na Javascriptu mi nejvíc vadí, že mnoho vývojářů ho používá chybně.
Ako ho teda pouzit spravne?
-
Mne osobne vadi, ze hnusny zaklad sa lepia pomerne dobre veci, ale tym zakladom je to skazene.
Spíš opačně. Na dobrý základ se lepí hnusné věci (frameworky) a na ty se lepí ještě hnusnější věci.
Na Javascriptu mi nejvíc vadí, že mnoho vývojářů ho používá chybně.
Ako ho teda pouzit spravne?
Zeptej se těch dobrých vývojářů. V Javascriptu dělám jen když musím a jen tak, aby aplikace fungovala dle zadání.
-
JavaScript je ve sve podstate dokonaly skoro od pocatku. Vsechno je objekt, event driven, jednoducha syntax a uspokojiva sada zakladnich knihoven, proste klasicky computational complete scriptovaci jazyk 3.5te generace = udelas v nem vse. Novejsi varianty od ES6+ nebo TS jsou povetsinou sugar syntax nadstavbou nad dokonalym zakladem ale taky pridavaji FP ficury co muzeme nalezt u jinych jazyku (treba iteratory, generatory, nove operatory atd.)
Co mu lze vytknout je v podstate to, ze mnoho odpousti a tam kde by jiny jazyk uz bezmocne rval tak JS se porad este snazi nepadnout. I kdyz je jednoduchy tak neni moc pro zacatecniky, treba operator + ma dvoji vyznam (na kterem je zalozena drtiva vetsina JS vtipku a snazi se autocastnout cokoliv aby nepadnul).
Ta C-like syntax je zaroven zdroj potizi pro prebehlivce z jinych jazyku, protoze si mysli, ze kdyz umi C ci Javu tak daji JS levou zadni a pak rvou nesmysly po forach misto toho aby si koukli manual a naucili se JS pouzivat spravne. Prasarny se daji delat v kazdem jazyku, naucte se ho poradne a nedelejte je, pak bude JS dobry sluha.
Casto se mu vytyka matika ale je to standardni implementace jako u spousty jinych jazyku a komu je to malo ma hafo knihoven pro presnejsi matiku.
Sila JS je taky v tom, ze vzhledem na chudost zabudovanych knihoven vzniklo milion frameworku a nadstaveb takze je z ceho vybirat a nemusite vynalezat kolo. Typicky treba utilitky pro funkcionalni programovani jako underscore nebo lodash.
Suma sumarum JS dnes vladne webu, vyhrava na frontendu (Electron, desktop managery) a pomalu si podmanuje backend (nodejs). Milovnici starych "dobrych" casu a jazykou mohou spkripat zuby, ale je to tak, zitra bude vsechno v JS resp. jeho novejsich iteracich.
-
JavaScript je ve sve podstate dokonaly skoro od pocatku. ... zitra bude vsechno v JS resp. jeho novejsich iteracich.
Prosimtě, moh bys mi poslat tak asi kamion toho materiálu, na kterym jedeš? ;D
-
JavaScript je ve sve podstate dokonaly skoro od pocatku. ... zitra bude vsechno v JS resp. jeho novejsich iteracich.
Prosimtě, moh bys mi poslat tak asi kamion toho materiálu, na kterym jedeš? ;D
Javascript je volně dostupný.
-
Mne osobne vadi, ze hnusny zaklad sa lepia pomerne dobre veci, ale tym zakladom je to skazene.
Spíš opačně. Na dobrý základ se lepí hnusné věci (frameworky) a na ty se lepí ještě hnusnější věci.
Na Javascriptu mi nejvíc vadí, že mnoho vývojářů ho používá chybně.
Ako ho teda pouzit spravne?
Zeptej se těch dobrých vývojářů. V Javascriptu dělám jen když musím a jen tak, aby aplikace fungovala dle zadání.
ja som nemyslel frameworky, tych je milion, skor ES3, ES6,...
A co by ste na nom vylepsili?
-
pomalu si podmanuje backend (nodejs)
Nestraš.
-
Na JavaScripte mi vadí ten Prototype nezmysel, všetko čo súvisí s Babelom, nemám tiež rád transpilery -- len zväčšujú už tak dosť veľký zmätok. Nepáči sa mi nedotiahnutý modulový systém, existencia desiatok či stoviek závislostí medzi knižnicami. Chýbajú mi zavedené štandardy, napr. ako organizovať, správne nakódiť databázovú vrstvu atď.
Vadí mi história jazyka, pretože prvý dojem bol príšerný, a to sa vlečie s jazykom doteraz, a množstvo programátorov JavaScript odsudzuje, hoci je to v súčasnosti naozaj veľmi dobrý jazyk.
Samozrejme, tiež sa pripájam k spomínaným prudkým zmenám v ekosystéme. Napríklad, začnete študovať Express.js framework, zistíte že je to skvelá vec. No a o pár mesiacov zistíte, že Express.js je passé, pretože je tu Koa.js (vytvorená autormi Expressu), ktorá zahrňuje nové vlastnosti jazyka (async, await). Je úplne logické, že sa autori tak rozhodli, pretože tieto novinky sú obrovským plusom a do Expressu sa to zrejme nedalo jednoducho dorobiť, ale teda nepoteší to, že zasa treba niečo prijať a zahodiť.
-
Prosimtě, moh bys mi poslat tak asi kamion toho materiálu, na kterym jedeš? ;D
Salvation & JavaScript is free. Nac bys vyhazoval penize na drogy kdyz ty endorfiny ti da zdarma vira a kodeni v javascriptu ? Ja resim oboje soubezne asi 10 let a je mi skvele i bez chemie.
-
Napríklad, začnete študovať Express.js framework, zistíte že je to skvelá vec. No a o pár mesiacov zistíte, že Express.js je passé, pretože je tu Koa.js (vytvorená autormi Expressu), ktorá zahrňuje nové vlastnosti jazyka (async, await).
Kdo si nenakodil vlastni framework neni JS koder! Radim ti, nekoukej moc po cizich hipsterskych frameworcich ale nakod si vlastni nebo slohni jadro z nerychlejsiho a dopln to co potrebujes. Pak ty iterace a zastaravani az tak neplati a cas na novou verzi je tak jednou za 3-4 roky.
-
JavaScript je ve sve podstate dokonaly skoro od pocatku.
Tak jazyk, ktorý má v syntaxe use strict nemohol nikdy byť dokonalý.
Ta C-like syntax je zaroven zdroj potizi pro prebehlivce z jinych jazyku, protoze si mysli, ze kdyz umi C ci Javu tak daji JS levou zadni a pak rvou nesmysly po forach misto toho aby si koukli manual a naucili se JS pouzivat spravne.
Podľa Douglas Crockforda to bolo spôsobené tým, že JavaScript bol vytvorený ako funkcionálny jazyk, s čím ale manažment nesúhlasil, preto mal navonok vyzerať ako štandardný jazyk. To bol jeden z viacerých kameňov úrazu jazyka.
Suma sumarum JS dnes vladne webu, vyhrava na frontendu (Electron, desktop managery) a pomalu si podmanuje backend (nodejs). Milovnici starych "dobrych" casu a jazykou mohou spkripat zuby, ale je to tak, zitra bude vsechno v JS resp. jeho novejsich iteracich.
Na frontende "vládne" C a C++ a veľmi ťažko si viem predstaviť, že by JavaScript vytlačil PHP a Javu zo svojich domén.
JavaScript zažíva prudký rozmach avšak zavedené technológie len tak ľahko nenahradí.
-
Napríklad, začnete študovať Express.js framework, zistíte že je to skvelá vec. No a o pár mesiacov zistíte, že Express.js je passé, pretože je tu Koa.js (vytvorená autormi Expressu), ktorá zahrňuje nové vlastnosti jazyka (async, await).
Kdo si nenakodil vlastni framework neni JS koder! Radim ti, nekoukej moc po cizich hipsterskych frameworcich ale nakod si vlastni nebo slohni jadro z nerychlejsiho a dopln to co potrebujes. Pak ty iterace a zastaravani az tak neplati a cas na novou verzi je tak jednou za 3-4 roky.
Není lepší si napsat vlastní transpiler?
-
Počet frameworkov nemá nič spoločné s kvalitou jazyka. A ani ich nie je milión, v súčasnosti sú top React a Angular, z ktorých React sa snažil o čo najviac funkcionálny prístup, Angular zasa o objektový. Mne sadol ten tretí, Vue, lebo je o čistom JS, nehrá sa ani na funkcionálny, ani na objektový framework, ikeď ide použiť aj tak. A že má milión závislostí? Nie, má nula závislostí. A že treťostranné knižnice sú delené na moduly? No a? Lebo Java nie je? Na klasy? A väčší projekt ich má pokojne tisíce? Len neviete o čom hovoríte. To nie je žiadna slabina JS, to je proste organizácia kódu a zasa to nemá nič spoločné s kvalitou jazyka. A že je v ňom dedičnosť implementovaná ako reťaz prototypov? No a? To je feature, zasa nie slabina. JS nie je ani zlý, ani dobrý. JS proste je. Prestaňte sa strápňovať jeho hodnotením, neviete o čom hovoríte. A pripájam článok od Java profesionála, ktorému JS učaroval rovnako ako mne. A ešte som to aj zažil osobne, Java profík z Telekomu po zoznámení s JS a princípov moderných web aplikácií (loose coupled arch., serverless s AWS, microservices, atď) za dva týždne bez problémov kódil f-e s Vue a b-e nad AWS a tiež sa mu to zapáčilo. Otvorte oči ovce, jazykov a princípov je milión, nie len ten jediný ktorý
viete. Tak nepičovať a hor sa učiť sa :)
-
Javascript není konzistentní ani sám se sebou...
https://slikts.github.io/js-equality-game/
-
Suma sumarum JS dnes vladne webu, vyhrava na frontendu (Electron, desktop managery) a pomalu si podmanuje backend (nodejs). Milovnici starych "dobrych" casu a jazykou mohou spkripat zuby, ale je to tak, zitra bude vsechno v JS resp. jeho novejsich iteracich.
Na frontende "vládne" C a C++ a veľmi ťažko si viem predstaviť, že by JavaScript vytlačil PHP a Javu zo svojich domén.
JavaScript zažíva prudký rozmach avšak zavedené technológie len tak ľahko nenahradí.
Jazyky C a C++ jsou přeceňovány, protože v něm píší programátoři pro programátory, zejména low-level aplikace. Skutečnost je mnohem rozmanitější. NodeJS se chová zcela jinak než PHP, proto budou stále koexistovat. Webhostingů s NodeJS je stále málo. Python byl kdysi také velkým webovým favoritem. Stále se používá, ale mainstreamem se nestal.
Přestože je Javascript zajímavým jazykem, stále má na Lisp co dohánět, ostatně jako většina jazyků.
-
Skor si myslim, ze JS bude akurat na lepenie kodu z webassembly. Kto normalny by sa ucil takyto balast. Ano, su tam pekne vlastnosti ako prototypovy objektovy pristup, ale tym to hasne.
-
Uplne nejvic nejzakladnejsi priklad, co mne napada, je treba ze proti hadani hesel se dela (mimo jine) ze po zadani credentialu se 1s pocka. Obvykly sleep ma ten problem, ze na tu sekundu zablokuje thread/proces. V JS se tohle dela snadno.
Anebo, pisu neco jako WWW proxy a sluzba vraci neco, co si pred tim vyzada realtime nekde jinde. Kdyz je "to nekde jinde" pomale, zase to blokne cely thread/proces.
Ne ze by se neco takoveho nedalo naspat v pythonu, ale JS je z podstaty async a i vsechny knihovny jsou taky async. Takze, kdyz treba pisete neco, co ceka na AWS SQS, je to v JS SDK rovnou async. Kdyz to budete delat v pythonu/ruby/java, tak to mate blby a musite delat thready/procesy. V JS si efektivne klidne stacite s 1 procesem/threadem.
Vznika nove paradigma, misto toho, aby funkce vracela navratovou hodnotu, vola callback. Ne kazdy se s tim dokaze poprat a ano, nekdy je to opravdu nesikovne...
-
Počet frameworkov nemá nič spoločné s kvalitou jazyka. A ani ich nie je milión, v súčasnosti sú top React a Angular, z ktorých React sa snažil o čo najviac funkcionálny prístup, Angular zasa o objektový. Mne sadol ten tretí, Vue, lebo je o čistom JS, nehrá sa ani na funkcionálny, ani na objektový framework, ikeď ide použiť aj tak. A že má milión závislostí? Nie, má nula závislostí. A že treťostranné knižnice sú delené na moduly? No a? Lebo Java nie je? Na klasy? A väčší projekt ich má pokojne tisíce? Len neviete o čom hovoríte. To nie je žiadna slabina JS, to je proste organizácia kódu a zasa to nemá nič spoločné s kvalitou jazyka. A že je v ňom dedičnosť implementovaná ako reťaz prototypov? No a? To je feature, zasa nie slabina. JS nie je ani zlý, ani dobrý. JS proste je. Prestaňte sa strápňovať jeho hodnotením, neviete o čom hovoríte. A pripájam článok od Java profesionála, ktorému JS učaroval rovnako ako mne. A ešte som to aj zažil osobne, Java profík z Telekomu po zoznámení s JS a princípov moderných web aplikácií (loose coupled arch., serverless s AWS, microservices, atď) za dva týždne bez problémov kódil f-e s Vue a b-e nad AWS a tiež sa mu to zapáčilo. Otvorte oči ovce, jazykov a princípov je milión, nie len ten jediný ktorý
viete. Tak nepičovať a hor sa učiť sa :)
Je jich milión a je v tom bordel. A to říkám jako někdo, kdo má JavaScript velmi rád. Ono se to časem srovná, ale teď je to fakt občas síla. :)
Javascript není konzistentní ani sám se sebou...
https://slikts.github.io/js-equality-game/
A nebo někdo neumí číst standard. ;)
-
Že se používá na skoro všech webech i těch v principu se statickým obsahem na straně klienta. Ještě před 10 lety jela většina webů i bez js, dnes už jen čestné výjimky. Js je pro mě jazyk na srandičky a hříčky a validaci formuláře na straně klienta.
-
Js je pro mě jazyk na srandičky a hříčky a validaci formuláře na straně klienta.
Tak to jsi asi sto let pozadu. :)
-
JavaScript je ve sve podstate dokonaly skoro od pocatku. Vsechno je objekt, event driven, jednoducha syntax a uspokojiva sada zakladnich knihoven, proste klasicky computational complete scriptovaci jazyk 3.5te generace = udelas v nem vse. Novejsi varianty od ES6+ nebo TS jsou povetsinou sugar syntax nadstavbou nad dokonalym zakladem ale taky pridavaji FP ficury co muzeme nalezt u jinych jazyku (treba iteratory, generatory, nove operatory atd.)
Co mu lze vytknout je v podstate to, ze mnoho odpousti a tam kde by jiny jazyk uz bezmocne rval tak JS se porad este snazi nepadnout. I kdyz je jednoduchy tak neni moc pro zacatecniky, treba operator + ma dvoji vyznam (na kterem je zalozena drtiva vetsina JS vtipku a snazi se autocastnout cokoliv aby nepadnul).
Ta C-like syntax je zaroven zdroj potizi pro prebehlivce z jinych jazyku, protoze si mysli, ze kdyz umi C ci Javu tak daji JS levou zadni a pak rvou nesmysly po forach misto toho aby si koukli manual a naucili se JS pouzivat spravne. Prasarny se daji delat v kazdem jazyku, naucte se ho poradne a nedelejte je, pak bude JS dobry sluha.
Casto se mu vytyka matika ale je to standardni implementace jako u spousty jinych jazyku a komu je to malo ma hafo knihoven pro presnejsi matiku.
Sila JS je taky v tom, ze vzhledem na chudost zabudovanych knihoven vzniklo milion frameworku a nadstaveb takze je z ceho vybirat a nemusite vynalezat kolo. Typicky treba utilitky pro funkcionalni programovani jako underscore nebo lodash.
Suma sumarum JS dnes vladne webu, vyhrava na frontendu (Electron, desktop managery) a pomalu si podmanuje backend (nodejs). Milovnici starych "dobrych" casu a jazykou mohou spkripat zuby, ale je to tak, zitra bude vsechno v JS resp. jeho novejsich iteracich.
Vjacemeněj souhlasím.
Moje výhrady:
- Je složitý. Pro začátečníka je to past vedle pasti.
- Je velký. Taková Lua mi přijde mnohem příjemnější. Na rozdíl od JS se pro ní dají snáze vytvářet céčkové extenze, snáze se bundluje do nějaké aplikace, má mnohem menší paměťovou náročnost. Syntaxí je mnohem kompaktnější a čistější. JS má naopak zbytečně zbytnělou syntax. Umí výjimky, ale neumí foreach.
- Monkey patching.
- Absence statického typování.
Co na JS naopak oceňuju:
- skoro všechno je first-class, funkce, typy
- céčková syntaxe
-
Js je pro mě jazyk na srandičky a hříčky a validaci formuláře na straně klienta.
Já už si zvykl ty formuláře přes ajax odesílat na server a redirect jinam udělat až po potvrzení úspěšného uložení.
A pokud jsou navíc součástí i nějaké větší soubory a uploaduje se to dlouho, tak klient alespoň může sledovat stav ukládání na server.
<form action=""><input type="submit"></form> už je fousatá historie. :-)
-
Moje výhrady:
- Je složitý. Pro začátečníka je to past vedle pasti.
- Je velký. Taková Lua mi přijde mnohem příjemnější. Na rozdíl od JS se pro ní dají snáze vytvářet céčkové extenze, snáze se bundluje do nějaké aplikace, má mnohem menší paměťovou náročnost. Syntaxí je mnohem kompaktnější a čistější. JS má naopak zbytečně zbytnělou syntax. Umí výjimky, ale neumí foreach.
- Monkey patching.
- Absence statického typování.
Co na JS naopak oceňuju:
- skoro všechno je first-class, funkce, typy
- céčková syntaxe
S tím se dá souhlasit, ale s tím, že je pro začátečníka těžký nevím... Pokud začátečník jiný jazyk neviděl, tak to naopak může být fajn. Nativně asynchronní (přejít na synchronní není takový problém jako opačně), složitější části jazyka lze objevovat postupně... A je všude + díky provázanosti s webem jde relativně rychle udělat základní gui. Ale ano, pokud začátečník přejde z nějakého jiného jazyka, tak se asi brzo střelí do nohy. :)
Btw neumí foreach?
-
Že se používá na skoro všech webech i těch v principu se statickým obsahem na straně klienta. Ještě před 10 lety jela většina webů i bez js, dnes už jen čestné výjimky. Js je pro mě jazyk na srandičky a hříčky a validaci formuláře na straně klienta.
Jsi zaspal dobu, kdyz si myslis ze to jen validace formulare a blikani a hvizdani. :D
MVC/MVVM singlepage app se kodili uz snad pred 8 lety (treba fb, twitter a spousta dalsich) takze se v tom normalne kodi aplikace. Akorat nebezi primo v OS ale v browseru. Ostate proto dnes mas desitky multiplatformnich aplikaci, ktere prdi na to jaky OS maji pod sebou, staci ze tam frci jadro chrome (Electron, Cobalt, Cordova...). Anebo na to neprdi, ty si kodis s jistymi pravidly web apku a na pozadi to vyuziva API OS (obvykle u mobilu, React Native, PhoneGap).
By si se divil co mas v mobilu anebo na desktopu a frci to v JavaScriptu (Skype, Slack, VisualStudio Code, Atom, Discord, WhasApp, Viber a spousta dalsich).
-
Btw neumí foreach?
Jenom jako iterace prvku pole. Kdyz chces iterovat props objektu tak na to musis for cyklem.
-
Btw neumí foreach?
Jenom jako iterace prvku pole. Kdyz chces iterovat props objektu tak na to musis for cyklem.
Akurát, že nie bežný for, ale for in cyklus.
-
PS: Object.keys(myObj).foreach(cb), ak na to chceš ísť funkcionálne
-
Object.keys(myObj) je pole - takže zase foreach nad polem. :-)
Ale stačilo aby místo "for each (variable in object)" byla syntaxe "foreach (variable in object)" a Boo by byl spokojený :-)
-
Já jsem měl chuť udělat hru v browseru v HTML5, canvas a čistý JavaScript, tzv. vanilkový. Předtím jsem naposledy viděl JS někdy v roce '96, kdy něco fungovalo v Netscapu, něco v MSIE, ale kompatibilita žádná. Pak JS skoro umřel na všechno bylo PHP a pak už jsem se nikdy až na pár vyjímek s něčím okolo webu srát nemusel.
Takže jsem začal od nuly, pokoušel se proniknout do ECMAScript6, snažil se udělat jakýs-takýs mírně objektový design, nějaké datové struktury atd, a ke canvasu se snažil přistupovat jako k bytovému poli, čistý kód...
No s tímhle přístupem jsem si tak maximálně nabil držku a posléze jsem se na to z vysoka vysral. Prostě mi to vůbec nevyhovovalo, maximálně jsem se lehce uklidňoval nad tím, že to má aspoň C syntax... Kdybych to napsal v C/SDL a pak zkompiloval pomocí llvm+emscripten, tak jsem to mohl mít za dva víkendy hotový.
-
Object.keys(myObj) je pole - takže zase foreach nad polem. :-)
Pole se v Javascriptu chová spíš jako seznam, podobně jako v PHP, takže ten foreach je namístě.
-
No s tímhle přístupem jsem si tak maximálně nabil držku a posléze jsem se na to z vysoka vysral. Prostě mi to vůbec nevyhovovalo, maximálně jsem se lehce uklidňoval nad tím, že to má aspoň C syntax... Kdybych to napsal v C/SDL a pak zkompiloval pomocí llvm+emscripten, tak jsem to mohl mít za dva víkendy hotový.
Nebyla náhodou chyba v tom, že jsi k canvasu přistupoval jako k bajtovému poli? To musel být docela opruz.
-
muj problem s javascriptem je ten, ze jakakoliv slozitejsi aplikace napsana v nem je prasarna z pohledu vykonu a systemovych prostredku
moje nejcerstvejsi zkusenost je ten webovy photoshop od ceskeho tvurce. Na prvni pohled to vypada velmi dobre, ale kdyz to zacnete pouzivat zjistite ze to je prilis pomale a nenazrane
-
muj problem s javascriptem je ten, ze jakakoliv slozitejsi aplikace napsana v nem je prasarna z pohledu vykonu a systemovych prostredku
moje nejcerstvejsi zkusenost je ten webovy photoshop od ceskeho tvurce. Na prvni pohled to vypada velmi dobre, ale kdyz to zacnete pouzivat zjistite ze to je prilis pomale a nenazrane
To by mělo do budoucna řešit WebAssembly.
-
No s tímhle přístupem jsem si tak maximálně nabil držku a posléze jsem se na to z vysoka vysral. Prostě mi to vůbec nevyhovovalo, maximálně jsem se lehce uklidňoval nad tím, že to má aspoň C syntax... Kdybych to napsal v C/SDL a pak zkompiloval pomocí llvm+emscripten, tak jsem to mohl mít za dva víkendy hotový.
Nebyla náhodou chyba v tom, že jsi k canvasu přistupoval jako k bajtovému poli? To musel být docela opruz.
To bude ono :)
Btw neumí foreach?
Jenom jako iterace prvku pole. Kdyz chces iterovat props objektu tak na to musis for cyklem.
Jo tak to jo. Čemu to vadí? (zvlášť s ES6+) :)
-
muj problem s javascriptem je ten, ze jakakoliv slozitejsi aplikace napsana v nem je prasarna z pohledu vykonu a systemovych prostredku
V porovnání s jinými scriptovacími jazyky si vede velice dobře:
JS vs Ruby: https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/node-yarv.html
JS vs Python: https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/node-python3.html
-
Btw neumí foreach?
Jenom jako iterace prvku pole. Kdyz chces iterovat props objektu tak na to musis for cyklem.
Jo tak to jo. Čemu to vadí? (zvlášť s ES6+) :)
[/quote]
Ja nerikam ze mi to vadi, pouze jsem odpovedel jak to je s foreach v JS. Stejne si kazdy nakodi nejaky vlastni each(cokoliv, (e,i)=>{}) nebo pouzije knihovnu.
-
Uplne nejvic nejzakladnejsi priklad, co mne napada, je treba ze proti hadani hesel se dela (mimo jine) ze po zadani credentialu se 1s pocka. Obvykly sleep ma ten problem, ze na tu sekundu zablokuje thread/proces. V JS se tohle dela snadno.
Anebo, pisu neco jako WWW proxy a sluzba vraci neco, co si pred tim vyzada realtime nekde jinde. Kdyz je "to nekde jinde" pomale, zase to blokne cely thread/proces.
Ne ze by se neco takoveho nedalo naspat v pythonu, ale JS je z podstaty async a i vsechny knihovny jsou taky async. Takze, kdyz treba pisete neco, co ceka na AWS SQS, je to v JS SDK rovnou async. Kdyz to budete delat v pythonu/ruby/java, tak to mate blby a musite delat thready/procesy. V JS si efektivne klidne stacite s 1 procesem/threadem.
Vznika nove paradigma, misto toho, aby funkce vracela navratovou hodnotu, vola callback. Ne kazdy se s tim dokaze poprat a ano, nekdy je to opravdu nesikovne...
To ale není žádná výsada Javascriptu a naopak to mají jiné jazyky často vyřešeno lépe. Javascript je jen místo, kde na to začínající (nebo sváteční) programátoři nejdřív narazí.
-
Mě vadí, že je to jednovláknová šmejďárna. V době 32jádrových procesorů navíc s HT dost problém. Všechny eventy a callbacky se řadí pěkně do frony a pak se synchronně provádějí. Jako cesta do pravěku, reminiscence na programování pro windows 3.11 je to fajn. Ale používat to v 2018? No nevím...
-
Mě vadí, že je to jednovláknová šmejďárna. V době 32jádrových procesorů navíc s HT dost problém. Všechny eventy a callbacky se řadí pěkně do frony a pak se synchronně provádějí. Jako cesta do pravěku, reminiscence na programování pro windows 3.11 je to fajn. Ale používat to v 2018? No nevím...
Tak přejdi na 64 bitů, když ti 32 nestačí.
-
Mě vadí, že je to jednovláknová šmejďárna. V době 32jádrových procesorů navíc s HT dost problém. Všechny eventy a callbacky se řadí pěkně do frony a pak se synchronně provádějí. Jako cesta do pravěku, reminiscence na programování pro windows 3.11 je to fajn. Ale používat to v 2018? No nevím...
Nutno dodať, že v prehliadači to tak má svoj význam a Node na pozadí jednovláknový nie je.
-
On není jednovláknový ani v prohlížeči, spousta věcí na pozadí jede paralelně.
-
Možná je doba 32-jádrových procesorů, ale také je doba 32 tabů v prohlížeči otevřených současně. A to se vsadím, že většina uživatelů má tak 4, možná 8-jádro. Proč by tedy měla mít jedna stránka k dispozici více vláken?
-
Možná je doba 32-jádrových procesorů, ale také je doba 32 tabů v prohlížeči otevřených současně.
A co ma tvojich 32 tabov spolocneho s JavaScriptom ?
-
Možná je doba 32-jádrových procesorů, ale také je doba 32 tabů v prohlížeči otevřených současně. A to se vsadím, že většina uživatelů má tak 4, možná 8-jádro. Proč by tedy měla mít jedna stránka k dispozici více vláken?
Třeba proto, aby se ty podúlohy na té jedné stránce při nějakém čekání vzájemně neblokovaly.
-
Možná je doba 32-jádrových procesorů, ale také je doba 32 tabů v prohlížeči otevřených současně. A to se vsadím, že většina uživatelů má tak 4, možná 8-jádro. Proč by tedy měla mít jedna stránka k dispozici více vláken?
Třeba proto, aby se ty podúlohy na té jedné stránce při nějakém čekání vzájemně neblokovaly.
Souhlas, ale na to není potřeba více vláken.
-
vetsinou hlavne to, ze nefunguje "back". nejde poslat odkaz na konkretni vec na webu.
a nerikam, ze je to hlavne problem JS - myslim, ze dobry vyvojar to umi osetrit.
-
vetsinou hlavne to, ze nefunguje "back". nejde poslat odkaz na konkretni vec na webu.
Tohle je jen chybou vývojáře. Když to neumí, tak to má přenechat na HTML.
-
Vznika nove paradigma, misto toho, aby funkce vracela navratovou hodnotu, vola callback. Ne kazdy se s tim dokaze poprat a ano, nekdy je to opravdu nesikovne...
Nejedna se o paradigma, ale o styl programovani, ktery se oznacuje jako "Continuation-passing style". A neni to nic noveho, protoze se jiz leta pouziva jako jeden z kroku prekladu funkcionalnich programu. Takovou zakladni cetbou je Appel: Compiling with Continuations z roku 1992.
-
Možná je doba 32-jádrových procesorů, ale také je doba 32 tabů v prohlížeči otevřených současně. A to se vsadím, že většina uživatelů má tak 4, možná 8-jádro. Proč by tedy měla mít jedna stránka k dispozici více vláken?
Třeba proto, aby se ty podúlohy na té jedné stránce při nějakém čekání vzájemně neblokovaly.
Souhlas, ale na to není potřeba více vláken.
Vice vlaken obecne ma vzdy smysl. Co kdyz amd/intel uvede treba 1024core cpu? Budeme si porad rikat ze single thread je vporadku?
-
Možná je doba 32-jádrových procesorů, ale také je doba 32 tabů v prohlížeči otevřených současně. A to se vsadím, že většina uživatelů má tak 4, možná 8-jádro. Proč by tedy měla mít jedna stránka k dispozici více vláken?
Třeba proto, aby se ty podúlohy na té jedné stránce při nějakém čekání vzájemně neblokovaly.
Proč by se měly blokovat? Pleteš si concurrency s paralelismem.
-
Javascriptu jsem na chut neprisel, ale Javascript VM a browser jako runtime pro beh frontend aplikaci transpilovanych ze silne typovejch jazyku je bezva. Java ani .Net nastroje pro debug/tuneni se na Chrome DevTools nechytaji. Navic JS appky dokazi bejt svizny, pokud programator vi co dela.
-
Jako programator, ktery posledni rok pise pouze javascript se nestacim divit co se tady pise za bludy.
1) v javascriptu se dnes pomalu dela vse, 70% veskereho frontendu (zbytek je kotlin/swift na mobilech), a taky v podstate valna vetsina microservicu na backendu. jen u klasickych monolitickych backendu se pouziva spring/net/symphony.
Node.js je v mnoha ohledech velmi rychly.
Jsem zhrozeny ze vetsina programatoru zde nechape jak funguje a jak se da implementovat async - (epoll & friends, pripadne jen jako user friendly frontend na klasickem multithreaded backendu podobne jak to je v browseru). ze vy ste kluci nikdy nepsali multi threaded appky a nechali ste nakou knihovnu nadtim vasim sync psanym backendem aby se s tim poprala? nojo klasika.
rozlisujte callback, a async callback dekuji.
v expressu muzete async/await psat bez jakekoliv koy.js.
async/await je stejne jen glorifikovany cukr nad promissma ktery se snazi zalibit synchronnim programatorum.
Vznika tak naprosto zabavny kolotoc abstrakce, kdy HW-> asynchronni, OS nabidne thready aby to vypadalo jako synchronni pro uzivatele -> multithreaded browser nabidne asynchronni js interface -> ES6 nabidne synchronne vypadajici async/await s try catch. je to genialni nebo dementni? sam nevim.
peo typy v js je typescript.
modulovy system je jiz vyresen a v browseru implementovan (import z es6) v nodu pod flagama zatim (meli by si uz pohnout). transpilace babelem je uzbtemer nepotrebna pro ecma featury, potrebujete ho jenom na framework specific syntax. ano webpack ma priserny interface zdroje a dokumentaci.
co je na js nahovno jsou akorat legacy veci a zoraseny truthy tsble, null/undefined, debilni +, a ten nesmysl s prototypama na ktery dnes muze srat a delat jen v classes ktere sou sane.
-
Jako programator, ktery posledni rok pise pouze javascript se nestacim divit co se tady pise za bludy.
1) v javascriptu se dnes pomalu dela vse, 70% veskereho frontendu (zbytek je kotlin/swift na mobilech), a taky v podstate valna vetsina microservicu na backendu. jen u klasickych monolitickych backendu se pouziva spring/net/symphony.
Node.js je v mnoha ohledech velmi rychly.
Jsem zhrozeny ze vetsina programatoru zde nechape jak funguje a jak se da implementovat async - (epoll & friends, pripadne jen jako user friendly frontend na klasickem multithreaded backendu podobne jak to je v browseru). ze vy ste kluci nikdy nepsali multi threaded appky a nechali ste nakou knihovnu nadtim vasim sync psanym backendem aby se s tim poprala? nojo klasika.
rozlisujte callback, a async callback dekuji.
v expressu muzete async/await psat bez jakekoliv koy.js.
async/await je stejne jen glorifikovany cukr nad promissma ktery se snazi zalibit synchronnim programatorum.
Vznika tak naprosto zabavny kolotoc abstrakce, kdy HW-> asynchronni, OS nabidne thready aby to vypadalo jako synchronni pro uzivatele -> multithreaded browser nabidne asynchronni js interface -> ES6 nabidne synchronne vypadajici async/await s try catch. je to genialni nebo dementni? sam nevim.
peo typy v js je typescript.
modulovy system je jiz vyresen a v browseru implementovan (import z es6) v nodu pod flagama zatim (meli by si uz pohnout). transpilace babelem je uzbtemer nepotrebna pro ecma featury, potrebujete ho jenom na framework specific syntax. ano webpack ma priserny interface zdroje a dokumentaci.
co je na js nahovno jsou akorat legacy veci a zoraseny truthy tsble, null/undefined, debilni +, a ten nesmysl s prototypama na ktery dnes muze srat a delat jen v classes ktere sou sane.
-
Proč by tedy měla mít jedna stránka k dispozici více vláken?
Protože se tam chtějí upravovat fotky ( https://www.photopea.com/ ), hrat hry s 3D grafikou a narocnou AI a provozovat tabulkove procesory s narocnymi formulemi. A brzy bude nekdo chtit clientside strihat video a provadet vedecke vypocty. Ale ja beru JS jako univerzalni jazyk. Kdybych bral JS jen jako jazyk pro clinet side webovou samohanou, tak bych pro nej mel jinou vytku, ze neni univerzalni ale jen pro tu samohanou.
-
Proč by tedy měla mít jedna stránka k dispozici více vláken?
Protože se tam chtějí upravovat fotky ( https://www.photopea.com/ ), hrat hry s 3D grafikou a narocnou AI a provozovat tabulkove procesory s narocnymi formulemi. A brzy bude nekdo chtit clientside strihat video a provadet vedecke vypocty. Ale ja beru JS jako univerzalni jazyk. Kdybych bral JS jen jako jazyk pro clinet side webovou samohanou, tak bych pro nej mel jinou vytku, ze neni univerzalni ale jen pro tu samohanou.
Na takové věci máme WebAssembly.
-
prectete si neco o web workerech.
-
v expressu muzete async/await psat bez jakekoliv koy.js.
Natívna podpora pre middleware sa plánuje pre Express 5.
V Koa to máme takto krásne jednoducho:
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
modulovy system je jiz vyresen a v browseru implementovan (import z es6) v nodu pod flagama zatim (meli by si uz pohnout).
No veď to, v Node to ešte nie je stále ready.
a ten nesmysl s prototypama na ktery dnes muze srat a delat jen v classes ktere sou sane.
Prototype sa dá ignorovať, ale straší to v Mozille dokumentácii, napr. Date.prototype.getDate(). Nielenže JavaScript má class, ale dajú sa jednoducho vytvárať objekty pomocou JSON syntaxe. A to môjmu Java mozgu istý čas trvalo pochopiť, že je možné vytvárať objekty takto krásne priamočiaro, bez všetkej tej ceremónie.
-
async/await je stejne jen glorifikovany cukr nad promissma ktery se snazi zalibit synchronnim programatorum.
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?
Vznika tak naprosto zabavny kolotoc abstrakce, kdy HW-> asynchronni, OS nabidne thready aby to vypadalo jako synchronni pro uzivatele -> multithreaded browser nabidne asynchronni js interface -> ES6 nabidne synchronne vypadajici async/await s try catch. je to genialni nebo dementni? sam nevim.
Mně by se líbil runtime, který na N OS threadech (N ~ počet CPU) poběží M "app" threadů, které se z programátorského hlediska budou jevit jako synchronní (tzn. nebudu řešit async/await), ale runtime to bude dělat asynchronně (bude to řešit za mě). Nemá to tak Go?
-
Nielenže JavaScript má class, ale dajú sa jednoducho vytvárať objekty pomocou JSON syntaxe. A to môjmu Java mozgu istý čas trvalo pochopiť, že je možné vytvárať objekty takto krásne priamočiaro, bez všetkej tej ceremónie.
No a přitom pořád stejně pracuješ s prototypy... Javistům to obecně trvá chvilku dýl, ale když si to po chvíli všechno "sedne", tak si to pravděpodobně ještě oblíbíš.
-
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
-
Mně by se líbil runtime, který na N OS threadech (N ~ počet CPU) poběží M "app" threadů, které se z programátorského hlediska budou jevit jako synchronní (tzn. nebudu řešit async/await), ale runtime to bude dělat asynchronně (bude to řešit za mě). Nemá to tak Go?
Go nebo třeba GCD.
-
prectete si neco o web workerech.
Ty se hodí v případě, že chci spustit nějaký delší výpočet a pak získat výsledek. Když chci 60FPS, tak potřebuji sdílenou paměť, synchronizační primitiva,...
-
v expressu muzete async/await psat bez jakekoliv koy.js.
Natívna podpora pre middleware sa plánuje pre Express 5.
V Koa to máme takto krásne jednoducho:
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
modulovy system je jiz vyresen a v browseru implementovan (import z es6) v nodu pod flagama zatim (meli by si uz pohnout).
No veď to, v Node to ešte nie je stále ready.
a ten nesmysl s prototypama na ktery dnes muze srat a delat jen v classes ktere sou sane.
Prototype sa dá ignorovať, ale straší to v Mozille dokumentácii, napr. Date.prototype.getDate(). Nielenže JavaScript má class, ale dajú sa jednoducho vytvárať objekty pomocou JSON syntaxe. A to môjmu Java mozgu istý čas trvalo pochopiť, že je možné vytvárať objekty takto krásne priamočiaro, bez všetkej tej ceremónie.
to mate mirne casove popleteny, javascript mel objekty vzdy, akorat nebyl class-based (class tam jsou az od nedavna jako doplnek). tzn objekty se tvorily vzdy literalne, NASLEDNE vznikl JSON ktery to ma primo v nazvu "javascript object notation" - dalo by se rici "javascript object creation notation" abychom byli presnejsi.
-
async/await je stejne jen glorifikovany cukr nad promissma ktery se snazi zalibit synchronnim programatorum.
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?
Vznika tak naprosto zabavny kolotoc abstrakce, kdy HW-> asynchronni, OS nabidne thready aby to vypadalo jako synchronni pro uzivatele -> multithreaded browser nabidne asynchronni js interface -> ES6 nabidne synchronne vypadajici async/await s try catch. je to genialni nebo dementni? sam nevim.
Mně by se líbil runtime, který na N OS threadech (N ~ počet CPU) poběží M "app" threadů, které se z programátorského hlediska budou jevit jako synchronní (tzn. nebudu řešit async/await), ale runtime to bude dělat asynchronně (bude to řešit za mě). Nemá to tak Go?
ten autor tam prece nehodnoti zdali je sync lepsi nez async, ale na vasi otazku -
callback hell resi prave uz promisy ktere vypadaji "velmi synchronne"
nabizi se potom uz jen otazka zdali mate radsi try catch nebo then catch
promise()
.then
.then
.then
.catch
vs
try {
await()
await()
await()
}
catch() {
}
-
null/undefined
Staci to vedet pouzivat. Undefined je default pri deklaraci promenne, ktere nebyla prirazena hodnota. Null by se mel prirazovat zamerne aby bylo videt rozdil jestli se promenne priradilo nic zamerne nebo deklaraci. Takze:
let promenna = 'neco mam';
promenna = undefined; // prasarna
promenna = null; // dobry
-
Promise vs async - pozor bezne promise.then.then. funguje seriove. Async funguje paralelne, async je tedy spise Promise.all().
-
Je úplne logické, že sa autori tak rozhodli, pretože tieto novinky sú obrovským plusom a do Expressu sa to zrejme nedalo jednoducho dorobiť, ale teda nepoteší to, že zasa treba niečo prijať a zahodiť.
Tohle se děje tak často, že se ptám, jestli není JavaScript write only jazyk.
-
null/undefined
Staci to vedet pouzivat. Undefined je default pri deklaraci promenne, ktere nebyla prirazena hodnota. Null by se mel prirazovat zamerne aby bylo videt rozdil jestli se promenne priradilo nic zamerne nebo deklaraci. Takze:
let promenna = 'neco mam';
promenna = undefined; // prasarna
promenna = null; // dobry
Petro nestaci, tohole je typicka legacy chyba pri navrhu jazyka. Pokud se to "naucite" pouzivat, ten investovany cas je ztraceny a mohla ste se ucit neco jineho, nehlede na to, ze je to dalsi zatez do pameti programatora. Muzete se naucit vselijake brikule vsemoznych jazyku, to nic nemeni na tom, ze je to spatne navrzene, kdyz jazyk vedle vam ukazuje jak je to spravne (napriklad python).
-
to mate mirne casove popleteny, javascript mel objekty vzdy, akorat nebyl class-based (class tam jsou az od nedavna jako doplnek). tzn objekty se tvorily vzdy literalne, NASLEDNE vznikl JSON ktery to ma primo v nazvu "javascript object notation" - dalo by se rici "javascript object creation notation" abychom byli presnejsi.
Nemám to časovo popletené, neviem prečo vznikol taký dojem. To, že JavaScript až do es6 nemal kľúčové slovo class, viem veľmi dobre. Pretože som ho pred vyše 10 rokmi tam márne hľadal, keď som vo firme dostal zadanie spraviť niečo v JavaScripte na frontende. Malo to C syntax, písalo sa o ňom, že je OOP, tak predsa tam to class musí byť. A nebolo. Objekty sa tvorili aj ináč, čo sa mi vrylo do pamäti ako prvé, tak to boli konštruktor funkcie.
// constructor function
function Item(name, maker) {
this.name = name;
this.maker = maker;
this.getInfo = function () {
return `${this.name} - ${this.maker}`
};
}
var item = new Item('IPhone', 'Apple');
console.log(item.getInfo());
Pre mňa bol AHA moment ten, keď som si uvedomil, že sa dajú vytvárať objekty a kolekcie objektov bez definovania tried, getterov a setterov a všektého toho balastu okolo. Pretože rokmi programovania v Jave sa človeku vryje do mozu, že trieda sa definuje pomocou class a objekt vytvorí pomocou new.
const R = require('ramda');
const users = [
{ name: 'John', city: 'London', born: '2001-04-01' },
{ name: 'Lenny', city: 'New York', born: '1997-12-11' },
{ name: 'Andrew', city: 'Boston', born: '1987-02-22' },
{ name: 'Peter', city: 'Prague', born: '1936-03-24' },
{ name: 'Anna', city: 'Bratislava', born: '1973-11-12' },
{ name: 'Albert', city: 'Bratislava', born: '1940-18-19' },
{ name: 'Adam', city: 'Trnava', born:'1983-12-01' },
{ name: 'Robert', city: 'Bratislava', born: '1935-05-15' },
{ name: 'Robert', city: 'Prague', born:'1998-03-14' }
];
let res = R.reject(R.propEq('city', 'Bratislava'))(users);
console.log(res);
let res2 = R.filter(R.propEq('city', 'Bratislava'))(users);
console.log(res2);
No a keď si človek uvedomí nakoniec, že veci sa dajú robiť oveľa jednoduchšie a elegantnejšie, tak precitne. Hore uvedený príklad by v Jave vyžadoval desiatky riadkov kódu navyše. JSON syntax a možnosť funkcionálneho spracovania dát napr. pomocou Ramdy ma na JavaScripte najviac zaujalo.
No a keď sa potom ešte Javista, ktorý má skúsenosť trebárs so Springom pozrie na taký Express, ako sa tam oveľa jednoduchšie nastavujú veci, tak dochádza k paradigm shift.
-
Staci to vedet pouzivat. Undefined je default pri deklaraci promenne, ktere nebyla prirazena hodnota. Null by se mel prirazovat zamerne aby bylo videt rozdil jestli se promenne priradilo nic zamerne nebo deklaraci. Takze:
let promenna = 'neco mam';
promenna = undefined; // prasarna
promenna = null; // dobry
null / undefined / NaN / "" / 0 ...
Vcelku dobře je to vysvětléné tady: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures
-
Promise vs async - pozor bezne promise.then.then. funguje seriove. Async funguje paralelne, async je tedy spise Promise.all().
Toto neni pravda, async tak napsany jak jsem psal ja, je sekvencni!!!! async muzete zavolat paralelne a taky to jinak musite napsat.
-
Promise vs async - pozor bezne promise.then.then. funguje seriove. Async funguje paralelne, async je tedy spise Promise.all().
Toto neni pravda, async tak napsany jak jsem psal ja, je sekvencni!!!! async muzete zavolat paralelne a taky to jinak musite napsat.
Doporucim vam knizku You Don't know javascript - nejlepsi knizky o javascriptu, kde jsou tyto veci velmi dobre vysvetlene.
-
Promise vs async - pozor bezne promise.then.then. funguje seriove. Async funguje paralelne, async je tedy spise Promise.all().
Toto neni pravda, async tak napsany jak jsem psal ja, je sekvencni!!!! async muzete zavolat paralelne a taky to jinak musite napsat.
Doporucim vam knizku You Don't know javascript - nejlepsi knizky o javascriptu, kde jsou tyto veci velmi dobre vysvetlene.
Odporúčam tú knihu miesto odporúčania radšej prečítať. Awaity v async funkcii sú vykonávané jeden po druhom, nie paralelne. Ergo, nie je to náhrada za Promise.all()
-
Ok nevim komu odpovidate ale aby nedoslo k mylce.
1) await bla { - SEKVENCNI!!! (jak jsem psal vyse)
try{
async()
async()
async()
}
catch{
}
}
2) await bla { - PARALELNI (mnoho lidi tohle nezna a nechape async)
let call1 = work1();
let call2 = work2();
result = [await call1, await call2] (v pripade promisu je tuna zdroju jak volat promisy paralelne)
}
--------
asyncy jsou ve vetsine pripadu seekvencni (protoze vic casu potrebujete sekvenci a ne paralel ciste prakticky) a pisou se v podstate stejne jako promisy, ergo jen syntax cukr.
-
a najdete mi pet rozdilu mezi timhle
promise()
.then()
.then()
.catch()
vs
await() {
try {
async1();
async2();
}
catch() {
}
}
-
a najdete mi pet rozdilu mezi timhle
promise()
.then()
.then()
.catch()
vs
await() {
try {
async1();
async2();
}
catch() {
}
}
Await je operátor, nie funkcia.
-
a najdete mi pet rozdilu mezi timhle
promise()
.then()
.then()
.catch()
vs
await() {
try {
async1();
async2();
}
catch() {
}
}
Await je operátor, nie funkcia.
prijde vam to jako realny kod? proboha. mluvte k veci.
-
a najdete mi pet rozdilu mezi timhle
promise()
.then()
.then()
.catch()
vs
await() {
try {
async1();
async2();
}
catch() {
}
}
Await je operátor, nie funkcia.
prijde vam to jako realny kod? proboha. mluvte k veci.
Ak to nie je reálny kód, čo reálne v ňom mám nájsť??
-
takze naposledy.
1) Petra - mnou prezentovany async kod byl SEKVENCNI - na paralelni jak ste chybne psala.
2) Vlado - Await/Async kod nemusi byt JEN sekvencni, muze byt I paralelni (pokud se vam nelibi muj priklad, vygooglete si to)
VLado, specialne pro vas, kdyz nemate cim prispet, uvital bych kdybyste nic nepsal.
-
Takže naposledy: si mimo. Promise.all() odpáli promisy paralelne, awaited promises sú spracované sériovo. Ten tvoj kód:
let call1 = work1();
let call2 = work2();
result = [await call1, await call2]
je vadný - najprv sa počká na call1, potom sa spustí call2, nie naraz. Keď už googliš pičoviny na stack overflow, tak sa pozri aj do komentárov daného riešenia, aspoň sa nabudúce nestrápniš poučovaním o tomto, čo neovládaš.
-
Malý příklad na použití async / await.
zavolá se 4krát async funkce, která uvnitř přes await dlouho čeká na výsledek výpočtu. V jeden moment ta funkce "běží" 4krát vedle sebe paralelně.
https://jsfiddle.net/t1cm36un/
-
Malý příklad na použití async / await.
zavolá se 4krát async funkce, která uvnitř přes await dlouho čeká na výsledek výpočtu. V jeden moment ta funkce "běží" 4krát vedle sebe paralelně.
https://jsfiddle.net/t1cm36un/
Neběží paralelně, ale sériově, jen s kooperativním schedulerem.
-
Malý příklad na použití async / await.
zavolá se 4krát async funkce, která uvnitř přes await dlouho čeká na výsledek výpočtu. V jeden moment ta funkce "běží" 4krát vedle sebe paralelně.
https://jsfiddle.net/t1cm36un/
To áno, ale ak následne v ďalšej funkcii potrebuješ výsledok všetkých štyroch, tak čo potom? Zistíš, že robíš kokotinu... Alebo mi prepíš nasledovný kód aby bol prehľadnejší, keď si myslíš, že to ide a že to bude stále paralelné:
function asyncFn1 () {
// implementácia...
}
function asyncFn2 () {
//implementácia...
}
function asyncFn3 () {
//implementácia...
}
function asyncFn4 () {
//implementácia...
}
const parseResult = async promiseArr => {
let [res1, res2, res3, res4] = await Promise.all(promiseArr)
// do something with res1, res2, etc...
}
let runParallel = [asyncFn1, asyncFn2, asyncFn3, asyncFn4]
parseResult(runParallel)
-
Takže naposledy: si mimo. Promise.all() odpáli promisy paralelne, awaited promises sú spracované sériovo. Ten tvoj kód:
let call1 = work1();
let call2 = work2();
result = [await call1, await call2]
je vadný - najprv sa počká na call1, potom sa spustí call2, nie naraz. Keď už googliš pičoviny na stack overflow, tak sa pozri aj do komentárov daného riešenia, aspoň sa nabudúce nestrápniš poučovaním o tomto, čo neovládaš.
Milý Vlado. Jste speciální. Protože jste speciální, JEN PRO VÁS ve svém volném čase jsem nachystal kód.
async function serial() {
await new Promise((res, rej) => {setTimeout(()=>{res()}, 1000);})
await new Promise((res, rej) => {setTimeout(()=>{res()}, 2000);})
await new Promise((res, rej) => {setTimeout(()=>{res()}, 3000);})
console.log("done");
}
serial(); run time ~ 6 seconds
async function parallel() {
let t1 = new Promise((res, rej) => {setTimeout(()=>{res('t1')}, 1000);})
let t2 = new Promise((res, rej) => {setTimeout(()=>{res('t2')}, 2000);})
let t3 = new Promise((res, rej) => {setTimeout(()=>{res('t3')}, 3000);})
console.log([await t1, await t2, await t3]);
}
parallel(); // run time ~ 3 seconds
//Node 10.11+//
Omlouvat se nemusíte. Důležité je, že se nešíří bludné informace.
-
Jak promisy tak v async/await lze spoustet seriove i paralelne. Definujme si nejakou asynchronni funkci:
function fakeFeed(out, timeout) {
return new Promise((resolve, reject) => {
setTimeout(() => { console.log(out); resolve(out); }, timeout);
})
}
async/await serial
async function main() {
await fakeFeed('feed 1', 400);
await fakeFeed('feed 2', 200);
}
main().then(
fulfilled => console.log('feeds fulfilled'),
rejected => console.log('error')
);
async/await paralell
async function main2() {
const ff1 = fakeFeed('feed 1', 400);
const ff2 = fakeFeed('feed 2', 200);
await ff1;
await ff2;
}
main2().then(
fulfilled => console.log('feeds fulfilled'),
rejected => console.log('error')
);
promise serial
fakeFeed('feed 1', 400)
.then(fulfilled => fakeFeed('feed 2', 200))
.then(fulfilled => console.log('feeds fulfilled'))
.catch(rejected => console.log('error'))
promise paralell
Promise.all([
fakeFeed('feed 1', 400),
fakeFeed('feed 2', 200)
]).then(
fulfilled => console.log('feeds fulfilled'),
rejected => console.log('error')
)
V pripadne paralelniho spusteni dojde nejdriv "feed 2" az pak "feed 1". V pripade serioveho spousteni dojdou v takovem poradi jak byli volany.
-
Boo napsal to totožné co já, jsem rád, že opět se prokázalo, že ti schopní, pilní a zkušení měli pravdu, kterou se nebáli obhájit. jen tak dál.
-
Jaka je pravda? Ze js je stejne jako php pouzitelny primarne pro bastleni a lepeni?
-
Jaka je pravda? Ze js je stejne jako php pouzitelny primarne pro bastleni a lepeni?
Ty bys radeji jazyk ktery zadne bastleni a lepeni neumoznuje ? Sem s nim :D
-
Jak promisy tak v async/await lze spoustet seriove i paralelne. Definujme si nejakou asynchronni funkci:
function fakeFeed(out, timeout) {
return new Promise((resolve, reject) => {
setTimeout(() => { console.log(out); resolve(out); }, timeout);
})
}
async/await serial
async function main() {
await fakeFeed('feed 1', 400);
await fakeFeed('feed 2', 200);
}
main().then(
fulfilled => console.log('feeds fulfilled'),
rejected => console.log('error')
);
async/await paralell
async function main2() {
const ff1 = fakeFeed('feed 1', 400);
const ff2 = fakeFeed('feed 2', 200);
await ff1;
await ff2;
}
main2().then(
fulfilled => console.log('feeds fulfilled'),
rejected => console.log('error')
);
promise serial
fakeFeed('feed 1', 400)
.then(fulfilled => fakeFeed('feed 2', 200))
.then(fulfilled => console.log('feeds fulfilled'))
.catch(rejected => console.log('error'))
promise paralell
Promise.all([
fakeFeed('feed 1', 400),
fakeFeed('feed 2', 200)
]).then(
fulfilled => console.log('feeds fulfilled'),
rejected => console.log('error')
)
V pripadne paralelniho spusteni dojde nejdriv "feed 2" az pak "feed 1". V pripade serioveho spousteni dojdou v takovem poradi jak byli volany.
To je jak u blbejch. JS nikdy nic paralelně neprovádí, nanejvýš tak konkurenčně.
-
Z hlediska uživatele/kódu je to paralelní dostatečně. Zbytek je věc interní implementace překladače/interpetu.
-
Jak promisy tak v async/await lze spoustet seriove i paralelne. Definujme si nejakou asynchronni funkci:
function fakeFeed(out, timeout) {
return new Promise((resolve, reject) => {
setTimeout(() => { console.log(out); resolve(out); }, timeout);
})
}
async/await serial
async function main() {
await fakeFeed('feed 1', 400);
await fakeFeed('feed 2', 200);
}
main().then(
fulfilled => console.log('feeds fulfilled'),
rejected => console.log('error')
);
async/await paralell
async function main2() {
const ff1 = fakeFeed('feed 1', 400);
const ff2 = fakeFeed('feed 2', 200);
await ff1;
await ff2;
}
main2().then(
fulfilled => console.log('feeds fulfilled'),
rejected => console.log('error')
);
promise serial
fakeFeed('feed 1', 400)
.then(fulfilled => fakeFeed('feed 2', 200))
.then(fulfilled => console.log('feeds fulfilled'))
.catch(rejected => console.log('error'))
promise paralell
Promise.all([
fakeFeed('feed 1', 400),
fakeFeed('feed 2', 200)
]).then(
fulfilled => console.log('feeds fulfilled'),
rejected => console.log('error')
)
V pripadne paralelniho spusteni dojde nejdriv "feed 2" az pak "feed 1". V pripade serioveho spousteni dojdou v takovem poradi jak byli volany.
To je jak u blbejch. JS nikdy nic paralelně neprovádí, nanejvýš tak konkurenčně.
Parallel se v kontextu tehle terminologie vsude v JS pouziva to za prve. Za druhe, zdali tento interface bezi na implementaci neceho co umi vyuzit vice jader/threadu je naprosto bezpredmetne. (napriklad v Nodu pouzivam helper thread bezne pri hashovani hesel, a ten interface je KUPODIVU STEJNY, kdo by to byl cekal).
Musim to napsat znova, jsem velmi zklamany urovni znalosti Computer Science na rootu.
-
To je jak u blbejch. JS nikdy nic paralelně neprovádí, nanejvýš tak konkurenčně.
To je akorat presnejsi terminus technicus. Obzvlast Perl-iste jsou na tohle haklivy :D Jadro OS nebo prinejmensim pipeline u procaku vam to stejne naseka do seriovych front.
-
Musim to napsat znova, jsem velmi zklamany urovni znalosti Computer Science na rootu.
Neznalost je zaklad hejtovani. Kdyby si zdejsi osazenstvo vice osahalo systemd, vim, emacs a javascript tak by diskuze zrejme zely prazdnotou protoze by nebylo na co nadavat ;) Ignorace k nicemu nevede, maximalne pak ignorantum ujde vlak az zjisti, ze JS se kupodivu pouziva vsude i pres jejich hejty.
-
To je jak u blbejch. JS nikdy nic paralelně neprovádí, nanejvýš tak konkurenčně.
To je akorat presnejsi terminus technicus. Obzvlast Perl-iste jsou na tohle haklivy :D Jadro OS nebo prinejmensim pipeline u procaku vam to stejne naseka do seriovych front.
Není. To je něco úplně jiného: https://blog.golang.org/concurrency-is-not-parallelism Takovéto triviviální znalosti by měl mít každý vývojář, co projde prvákem na hnojárně nebo možná i VŠE ;)
-
Mně se JS koncepčně líbí. Už jsem v něm pár let nic nedělao, tak nevím jak na tom je, ale dříve mě na něm iritovala chudá knihovna funkcí, i těch základních, třeba pro práci s řetězci nebo čísly.
-
Jaka je pravda? Ze js je stejne jako php pouzitelny primarne pro bastleni a lepeni?
Ty bys radeji jazyk ktery zadne bastleni a lepeni neumoznuje ? Sem s nim :D
V zasade mas pravdu, ale obvykle bastlici a lepici hledaji nejlehci zpusob pro sve bastleni a lepeni, tudiz sahnou po jazyce ktery jim umozni zakladni funkcionalitu instantne bez nutnosti ucit se.
-
V zasade mas pravdu, ale obvykle bastlici a lepici hledaji nejlehci zpusob pro sve bastleni a lepeni, tudiz sahnou po jazyce ktery jim umozni zakladni funkcionalitu instantne bez nutnosti ucit se.
To uz prilis generalizujes a navic chybne. U webovych technologii tak nejak ani nemas na vyber protoze enginy browseru nativne podporuji pouze JS. Casem ho mozna nahradi Wasm a otazka jazyku bude mene podstatna ale to "casem" bude hodne daleko, tak minimalne 10 let.
-
Pre nojo a Boo: pletiete si pojmy a dojmy. Promises vo vašich príkladoch budú stále vďaka await odpálené v sérii, jeden po druhom. To len tie timery vám tam pobežia konkurenčne, vy trubky. Zmeň ff1 na vyššiu hodnotu, napríklad 4000, a ff2 na 1000 a uvedom si, prečo ti aj "feed 2" vypíše až po štyroch sekundách a nie po sekunde. Lebo hovno tam ide paralelne, čaká sa na `await ff1`. A to, že medzi tým skončí ten rýchlejší timer, lebo tie boli naštartované konkurenčne a nie promises, s tým nemá nič spoločné.
async function main2() {
const ff1 = fakeFeed('feed 1', 4000)
const ff2 = fakeFeed('feed 2', 200)
await ff1
await ff2
}
-
Co vám vadí na JavaScriptu v roce 2018?
Že je rok 2018 a ono to pořád ještě žije.
-
A nekecáš náhodou?
Vytáhl jsem logování do samostatné funkce a přidal jsem si do výpisu čas od začátku spuštění skriptu:
200ms - feed 2
4000ms - feed 1
feeds fulfilled
-
A nekecáš náhodou?
Vytáhl jsem logování do samostatné funkce a přidal jsem si do výpisu čas od začátku spuštění skriptu:
200ms - feed 2
4000ms - feed 1
feeds fulfilled
Nekecám. Vypísalo ti to všetko naraz po štyroch sekundách. Stále nerozumieš?
-
Ne nevypsalo, pusť si tohle a koukej:
https://jsfiddle.net/t1cm36un/
-
Ne nevypsalo, pusť si tohle a koukej:
https://jsfiddle.net/t1cm36un/
Sorry chyba odkazu https://jsfiddle.net/t1cm36un/1/
-
...
https://www.youtube.com/watch?v=fEyj-rXJbNw
-
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ší.
-
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.
-
K čemu je mi koukat dokumentace, která neodpovídá realitě?
-
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.
-
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.
-
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...?
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:
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.
-
- 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í.
-
- 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.
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).
-
- 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.
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:
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).
-
Ideální je mít např. toto:
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č....
-
Ideální je mít např. toto:
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"...
-
Ja JS považujem za jeden z najlepšich jazykov popri jazykoch ako sú Scala, či Go
-
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.
-
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.
-
Vlado ty uz nepis nikam nic :D
-
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.
-
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.
-
Bylo by velmi smutne, kdyby se tento jazyk navrzeny za 10 dni rozsiril mimo browsery.
-
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.
-
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.
Potká kravinec javascript a říká: “Co ty jseš zač?” “Já jsem programovací jazyk.” Kravinec dostane záchvat smíchu a odvětví: “Jestli ty jseš programovací jazyk, tak já jsem pizza.”
-
Ale ten jazyk priamo podporuje ludi k tomu aby kodili ako prasata. Vidiet to aj v standrdnom api, kde cast veci vracia promisy, druha cast pouziva callbaky, tretia registraciu na udalosti.
Potom sa to okodi kniznicami, ale zas kazda je ina a nepsauje to...
-
Pripada mi, jakoby tu vetsina pisatelu nepracovala na webovy aplikaci po roce 2010.
Je mi to jasne. Spring/ASP.NET kod plny OOP abstrakci, data plnena do Freemarker/Razor sablon a na klientu jQuery pro nejaky ten onClick efekt a k tomu poradne REST api. Pozadavky klientu a standard toho jak vypada a jak reaguje na uzivatele webova apka je trosku jinde.
Ale samozrejme, vetsiny uzivatelu Root fora se to netyka, ti programuji skutecne aplikace - zbrojni systemy jadernych ponorek v Rust ci mobilni apky v Pascalu. Jen idioti v Netflixu, kupa stipendijnich cinanu ze Stanfordu ve Facebooku, Instagramu ci DropBoxu vubec netusi, jakou zrudnost v rukou maji. Kdyby to tusili, ihned by pocali odstranovat ty sve typescripty, reacty, ramdy, graphql, apolla, flowy a dalsi zrudnosti toho podleho ekosystemu a pekne po staru posilali velike json stromecky na sve sedesatiparametrove RESTy..
-
Pripada mi, jakoby tu vetsina pisatelu nepracovala na webovy aplikaci po roce 2010.
Je mi to jasne. Spring/ASP.NET kod plny OOP abstrakci, data plnena do Freemarker/Razor sablon a na klientu jQuery pro nejaky ten onClick efekt a k tomu poradne REST api. Pozadavky klientu a standard toho jak vypada a jak reaguje na uzivatele webova apka je trosku jinde.
Ale samozrejme, vetsiny uzivatelu Root fora se to netyka, ti programuji skutecne aplikace - zbrojni systemy jadernych ponorek v Rust ci mobilni apky v Pascalu. Jen idioti v Netflixu, kupa stipendijnich cinanu ze Stanfordu ve Facebooku, Instagramu ci DropBoxu vubec netusi, jakou zrudnost v rukou maji. Kdyby to tusili, ihned by pocali odstranovat ty sve typescripty, reacty, ramdy, graphql, apolla, flowy a dalsi zrudnosti toho podleho ekosystemu a pekne po staru posilali velike json stromecky na sve sedesatiparametrove RESTy..
Co hulíš?
-
Potká kravinec javascript a říká: “Co ty jseš zač?” “Já jsem programovací jazyk.” Kravinec dostane záchvat smíchu a odvětví: “Jestli ty jseš programovací jazyk, tak já jsem pizza.”
Až to po tobě za pár let budou všude chtít, tak jim místo toho můžeš aspoň říct super fór. Kdyby je to nepobavilo, tak můžeš přidat něco o lopatách.