Proč se cpe JavaScript na backend?

Re:Proč se cpe JavaScript na backend?
« Odpověď #30 kdy: 03. 02. 2025, 20:35:41 »
Nojo, jenže ten, na koho reaguješ, právě popisoval situaci, kdy "hodně počítá", tj. to vlákno se nefláká a nečeká na I/O, ale opravdu něco počítá - a takových vláken dokonce má víc než jedno. A v tu chvíli najednou nestačí "niekde dať await a je to vyriešené".
Pak nesmí takové výpočty provádět v hlavním vlákně, ale musí je volat z hlavního vlákna asynchronně s callback funkcí a ono se to zparalelizuje samo.


Re:Proč se cpe JavaScript na backend?
« Odpověď #31 kdy: 03. 02. 2025, 21:36:22 »
Pak nesmí takové výpočty provádět v hlavním vlákně, ale musí je volat z hlavního vlákna asynchronně s callback funkcí a ono se to zparalelizuje samo.

Přiznám se, že v JS nevyvíjím, mimo nějaké sebeobrany a provozu pár hotových aplikací. Ale přišlo mi, že ten princip je vcelku jasný - ten event loop běží pořád jako jedno vlákno - záměrně. Node.js pak používá ještě libuv, který vlákna samozřejmě používá a přes který řeší non-blocking IO operace, DNS resolving, streamy, systémové příkazy atp.
Ale jakmile jde přímo o nějaký kód přímo v JS, tak z toho event loopu přeci nijak nevyskočím, žádný mechanismus, který by to automaticky spouštěl v dalším vlákně tam není, a už je jedno jak ten kód obalím (aspoň já nevím jak).
Mimo worker threadů, které právě na tohle byly do Node.js přidané (i když samozřejmě to není konvenční threading jako v jiných prostředích typu Java nebo C#, protože to startuje celou novou izolovanou instanci V8, takže to spuštění je relativně pomalé a nesdílí to s hlavním vláknem stejná data - má to blíž např. k multiprocessing modulu v Pythonu, co si fakticky také spustí další interpretr).
A ano jsou na WT dál nějaké helpery, aby se to jednodušeji používalo (znám jen threads.js), ale ten základní princip zůstává.

Nebo jak jste to myslel?

Jinak ještě, já neříkám, že tenhle aspekt, musí každý nutně pocítit jako problém. Je vždycky x způsobů jak něco udělat. A asi tip bych si, že u většiny projektů, co na tom běží, se většina déle trvajících operací přesně vejde mezi ty non-blocking (síť, databáze), co si řeší node.js transparentně přes libuv. A když už tam někde má heavy věc, tak si ji šoupne do WT. Nebo třeba nějaké extrakce, komparace s hodně daty může udělat rovnou v db vrstvě, případně pokud je to něco pořád se opakujcího tak se třeba vyplatí rozjet nějakou mikroslužbu bokem.. Ale samozřejmě to rozhodnutí, jestli je některé vlastnost showstopper, je indiviudální.

alex6bbc

  • *****
  • 1 732
    • Zobrazit profil
    • E-mail
Re:Proč se cpe JavaScript na backend?
« Odpověď #32 kdy: 03. 02. 2025, 21:58:56 »
ad michal smucr:

frontendak potrebuje neco na serveru tak tam vrazi nodejs s tema problemama co jste popsal.

jako backendar jsem se musel ten js nejak, jakkoliv doucit. frontendaci nemaji silu se naucit golang, python atd.

je to nahoda nebo symptom?!!

Kit

  • *****
  • 709
    • Zobrazit profil
    • E-mail
Re:Proč se cpe JavaScript na backend?
« Odpověď #33 kdy: 03. 02. 2025, 22:25:18 »
Nezazněly tu hlavní rozdíly mezi ekosystémy. Pokud je na backendu PHP, tak má každý návštěvník vlastní proces, který je po vygenerování výstupu zlikvidován. Tím je zabráněno možnému zaseknutí serveru, při pádu jednoho procesu stačí reload stránky.

Naproti tomu servery s Javou či Javascriptem řeší odpovědi jedním procesem větveným na vlákna. Návštěvníci tedy mohou spolu interagovat bez použití databáze, mohou pracovat se společnými daty. Nevýhodou může být, že při pádu aplikace spadne celý server.

Typový systém nepovažuji za nezbytný. Dá se spolehlivě pracovat i bez něho a vývoj je o to rychlejší. Jen je třeba klást větší důraz na testy, bez kterých se dnes stejně programovat nedá.

Re:Proč se cpe JavaScript na backend?
« Odpověď #34 kdy: 04. 02. 2025, 07:42:18 »
Pak nesmí takové výpočty provádět v hlavním vlákně, ale musí je volat z hlavního vlákna asynchronně s callback funkcí a ono se to zparalelizuje samo.
Nic se "samo" nezparalelizuje. Node.js event loop je single-threaded a pokud člověk potřebuje počítat ve víc vláknech najednou, tak musí začít řešit opičárny typu Worker threads (ale to už rozhodně není "samo").

Typový systém nepovažuji za nezbytný. Dá se spolehlivě pracovat i bez něho a vývoj je o to rychlejší.
Ze začátku, dokud je kódu málo a člověk to celý udrží v hlavě, možná i jo. Jak projekt začne růst, tak to drhne čím dál víc. (Ono celkem logicky pokud by vývoj bez typů byl vždycky rychlejší, tak by se moc nepoužívaly)


Re:Proč se cpe JavaScript na backend?
« Odpověď #35 kdy: 04. 02. 2025, 15:11:25 »
Pokud udelate na backendu microservisovou architekturu, tak neni problem treba nejakou tu servicu naimplementovat v javascriptu.

Uz jsem taky zazil, ze technologie byla urcena tim, co ma firma za programatory.

To je co za primitivny argument? To ze nieco mozes urobit neznamena zeby si mal. To ze si chlap mas vsetko potrebne nato aby si trtkal do riti ineho chlapa ale to neznamena ze to je dobry napad....

Re:Proč se cpe JavaScript na backend?
« Odpověď #36 kdy: 04. 02. 2025, 19:06:14 »
Asi mi něco uniká, já jsem nikdy ten boom JS na backendu nepochopil. Nedokážu si představit, jak by na něm fungovaly moje projekty. Dělám e-shopy a mám tam plno blokujících operací, např.:
- Čtení a generování velkých XML/Excel dat (stovky tisíc produktů)
- Následné zpracování (dost často plnohodnotným ORM)
- Různé prasárny, kde se porovnávají obrovská pole atd. I těch rychlejších CPU operací je stejně hodně a podle mě se to nasčítá.
O tom to cele je. Ja zase nevidim duvod proc by vetsina webu mela byt psana v (dosad si sam) kdyz je na to PHP nebo JS mnohem efektivnejsi. A to slovo efektivnejsi ma spoustu duvodu, ale vsechny v zasade konci na ceně.
Děkuji za možnost editace příspěvku.

Re:Proč se cpe JavaScript na backend?
« Odpověď #37 kdy: 04. 02. 2025, 19:08:41 »
jako backendar jsem se musel ten js nejak, jakkoliv doucit. frontendaci nemaji silu se naucit golang, python atd.

je to nahoda nebo symptom?!!
Kazdy holt nema dano byt raketovy inzenyr ci jaderny vedec. Ale vas nerd ninjy by zase nebavilo lepit ty webiky za par kacek. Stejne jako potrebujes neurochirurgy tak potrebujes i obvodaky, ale dokonce potrebujes i prodavacky v lidlu. Proc se vetsina testeru nema silu naucit goland? Je to nahoda nebo symptom? tak asi takhle hloupy je tvuj dotaz.
Děkuji za možnost editace příspěvku.

Re:Proč se cpe JavaScript na backend?
« Odpověď #38 kdy: 04. 02. 2025, 19:10:46 »
Nezazněly tu hlavní rozdíly mezi ekosystémy. Pokud je na backendu PHP, tak má každý návštěvník vlastní proces, který je po vygenerování výstupu zlikvidován. Tím je zabráněno možnému zaseknutí serveru, při pádu jednoho procesu stačí reload stránky.

Naproti tomu servery s Javou či Javascriptem řeší odpovědi jedním procesem větveným na vlákna. Návštěvníci tedy mohou spolu interagovat bez použití databáze, mohou pracovat se společnými daty. Nevýhodou může být, že při pádu aplikace spadne celý server.

Typový systém nepovažuji za nezbytný. Dá se spolehlivě pracovat i bez něho a vývoj je o to rychlejší. Jen je třeba klást větší důraz na testy, bez kterých se dnes stejně programovat nedá.
Uz je tady zas, Karliku, opakuji uz je tady zas!
Neni schopen pracovat s typama, omlouva si to a navic nechape horizontalni skalovani.
Děkuji za možnost editace příspěvku.

Re:Proč se cpe JavaScript na backend?
« Odpověď #39 kdy: 04. 02. 2025, 22:57:55 »
Když pominu tasky, co jsou na první pohled CPU intenzivní a pouštěl bych je ve Workeru, tak se mi nechce věřit, že obyčejný kód nebude blokovat requesty ostatních uživatelů. Prostě když pracuji s ORM, mapuju hromadu entit + další věci pro několik requestů v jednu chvíli, tak se to musí nasčítat a budou se blokovat navzájem. Chápu, u malý aplikace typu blog to asi nebude problém, ale nějak si to nedokážu představit na svých projektech.

jjrsk

  • *****
  • 659
    • Zobrazit profil
Re:Proč se cpe JavaScript na backend?
« Odpověď #40 kdy: 05. 02. 2025, 08:27:08 »
... kdyz je na to PHP nebo JS mnohem efektivnejsi....
Mluvit v pripade js o efektivite to chce hodne fantazie ... je to zkratka jedina vec kterou browsery umej. A to php se v poslednich letech taky kvuli vsemoznym frikulinum pekne zvrhlo. Za par let bude jednodussi a pristupnejsi napsat to v asm.

Re:Proč se cpe JavaScript na backend?
« Odpověď #41 kdy: 05. 02. 2025, 09:53:27 »
Do pojmu efektivita pada taky: jak sehnat vyvojare, jak zaplatit vyvojare, jak vyuzit vyvojare ktere mas, pokud jsi vyvojar tak vyuziti znalosti i to, ze znas ekosystem a proste to dokazes udelat efektivne.

Efektivne neznamena inzenyrsky nejlepe s nejvyssim moznym vykonem.

Zejmena v media publishingu je stale efektivnejsi vyuzit tyhle "lopaty" nez hledat inzenyry co ti to udelaji v rustu nebo go...
Děkuji za možnost editace příspěvku.

Re:Proč se cpe JavaScript na backend?
« Odpověď #42 kdy: 05. 02. 2025, 11:50:14 »
Mluvit v pripade js o efektivite to chce hodne fantazie ... je to zkratka jedina vec kterou browsery umej. A to php se v poslednich letech taky kvuli vsemoznym frikulinum pekne zvrhlo. Za par let bude jednodussi a pristupnejsi napsat to v asm.
Ale ono to efektivní je - ve smyslu, že to běží dostatečně rychle a stálo to poměrně málo peněz na vývoj, protože jsi mohl použít levnýho JS/PHP bastliče. Není to efektivní ve smyslu využití CPU/RAM/atd., ale to u 90 % blogísků/eshopů fakt nikomu žíly trhat nebude...

Re:Proč se cpe JavaScript na backend?
« Odpověď #43 kdy: 05. 02. 2025, 19:10:58 »
Citace
frontendak potrebuje neco na serveru tak tam vrazi nodejs s tema problemama co jste popsal.

jako backendar jsem se musel ten js nejak, jakkoliv doucit. frontendaci nemaji silu se naucit golang, python atd.

je to nahoda nebo symptom?!!

Z tohoto mám dojem, že svoju úvodnú otázku ste nekládli preto, aby ste sa dozvedeli názori ľudí, ktorí uprednostňujú JavaScript ekosystém. Vyznieva to skôr tak, že na Vašom projekte sa používa JavaScript/TypeScript/Node.js a Vás to z nejakého dôvodu rozčuľuje. Preto tu hľadáte utvrdenie v tom, že "my backend-áci" sme nadradení a "oni frontend-áci" sú podradní.

Ak je to tak (a môžem sa samozrejme mýliť), tak zabudnite na "my" a "oni" a berte to ako príležitosť naučiť sa novú technológiu. Každý mainstreamový jazyk/ekosystém Vám dá niečo nové a žiadny nie je podradný. Obzvlášt JavaScript mi svojho času dal veľmi veľa.

xyz

  • ****
  • 257
    • Zobrazit profil
Re:Proč se cpe JavaScript na backend?
« Odpověď #44 kdy: 05. 02. 2025, 23:32:41 »
Citace
frontendak potrebuje neco na serveru tak tam vrazi nodejs s tema problemama co jste popsal.

jako backendar jsem se musel ten js nejak, jakkoliv doucit. frontendaci nemaji silu se naucit golang, python atd.

je to nahoda nebo symptom?!!

Z tohoto mám dojem, že svoju úvodnú otázku ste nekládli preto, aby ste sa dozvedeli názori ľudí, ktorí uprednostňujú JavaScript ekosystém. Vyznieva to skôr tak, že na Vašom projekte sa používa JavaScript/TypeScript/Node.js a Vás to z nejakého dôvodu rozčuľuje. Preto tu hľadáte utvrdenie v tom, že "my backend-áci" sme nadradení a "oni frontend-áci" sú podradní.

Ak je to tak (a môžem sa samozrejme mýliť), tak zabudnite na "my" a "oni" a berte to ako príležitosť naučiť sa novú technológiu. Každý mainstreamový jazyk/ekosystém Vám dá niečo nové a žiadny nie je podradný. Obzvlášt JavaScript mi svojho času dal veľmi veľa.

velmi vela...
JS neznam, tohle je stale aktualni?
https://dorey.github.io/JavaScript-Equality-Table/