Problémy s JavaScript v praxi

misch

Re:Problémy s JavaScript v PRAXI
« Odpověď #15 kdy: 26. 09. 2018, 21:27:00 »
Citace od: Honza kdy 26. 09. 2018, 19:25:54
Citace od: avc kdy 26. 09. 2018, 17:53:41
https://wtfjs.com/
:o Díky moc! Tohle by mělo ukončit všechny debaty...
Nevím, jestli zrovna https://wtfjs.com/wtfs/2014-01-29-regular-expression-and-slash (autorova totální obecná neznalost regexpů, a nesmyslný předpoklad že by /[A-z]/ mělo matchnout jen písmena), nebo https://wtfjs.com/wtfs/2014-10-07-true-equals-false (překvapení, že !!"string" je true, ať už jde o !!"Ne", !!"true" nebo !!"false") jsou zrovna ukázky chybně navrženého jazyka ...


BoneFlute

  • *****
  • 2 155
Re:Problémy s JavaScript v PRAXI
« Odpověď #16 kdy: 26. 09. 2018, 21:28:12 »
1. monkey patching. Nevidím problém v možnosti přidat nějakou metodu jako takové. Ale v tom, že bez varování mohu přepisovat existující, to mi přijde nešikovné.
2. jazyk je to strašně ukecanej, na to, že toho zase tolik neumí
3. žádná podpora pro zapouzdření. Zapouzdřenost ala Python by mi stačila.
4. nejednotnost - třeba jazyk Lua má pro "nic" jen jednu hodnotu. A můžeš na ni normálně "šahat", chybu ti vyhodí tepreve nil of nil. Javascript má undefined, null, '', 0, false. Vytváření objektu jde taky dělat na několik způsobů, včetně pravěkého "new".
5. absence foreach mě furt nutila přecházet do transpilerů
6. má typy ale nemá statické typování - prvé bez druhého podle mého nemá vůbec žádný smysl. Buď ať je to dynamický jazyk bez typů (příklad Lua, Erlang), nebo staticky typovaný.

Vlado

Re:Problémy s JavaScript v PRAXI
« Odpověď #17 kdy: 26. 09. 2018, 21:32:12 »
Citace od: Honza kdy 26. 09. 2018, 21:22:35
Citace od: eee kdy 26. 09. 2018, 21:04:14
Uz umi js formatovani retezcu a cisel?
ne, ale řetězec a číslo je v javascriptu totéž:
"111" == 111; -> true
:-)

Nie, nie je. Typeof "111" je reťazec, typeof 111 je číslo. A že nevieš, sa pri porovnaní nekompatibilných typov najprv vykoná implicit coercion, je tvoja neznalosť, nie problém s JS.

Kolemjdouci

Re:Problémy s JavaScript v PRAXI
« Odpověď #18 kdy: 26. 09. 2018, 21:39:19 »
Citace od: Vlado kdy 26. 09. 2018, 21:32:12
Citace od: Honza kdy 26. 09. 2018, 21:22:35
Citace od: eee kdy 26. 09. 2018, 21:04:14
Uz umi js formatovani retezcu a cisel?
ne, ale řetězec a číslo je v javascriptu totéž:
"111" == 111; -> true
:-)

Nie, nie je. Typeof "111" je reťazec, typeof 111 je číslo. A že nevieš, sa pri porovnaní nekompatibilných typov najprv vykoná implicit coercion, je tvoja neznalosť, nie problém s JS.

Ale kazdej takovej jazyk je pak nebezpecnej svetu, protoze se realne *NEDA* otestovat, jak to bude spolehlive. Leda mit na kazdem tretim radku force typu :) To plati i pro PHP (== vs ===). Nesouhlasim, ze to je o 'nevim'. Je, dle meho, zasadni problem. Nechtel bych, aby muj zivot (treba nekde v aute :) zavisel na tom, jestli se nahodou neco (ne)povede. Z meho pohledu: to co selze pokazdy je o 10 radu lepsi, nez to co selze 'nekdy'. Treba kvuly zapomenutymu testu na '.' nekde kdesi naprosto jinde v kodu (a je z toho hnedle float)

Kolemjdouci

Vlado

Re:Problémy s JavaScript v PRAXI
« Odpověď #19 kdy: 26. 09. 2018, 21:39:26 »
Citace od: misch kdy 26. 09. 2018, 21:27:00
Citace od: Honza kdy 26. 09. 2018, 19:25:54
Citace od: avc kdy 26. 09. 2018, 17:53:41
https://wtfjs.com/
:o Díky moc! Tohle by mělo ukončit všechny debaty...
Nevím, jestli zrovna https://wtfjs.com/wtfs/2014-01-29-regular-expression-and-slash (autorova totální obecná neznalost regexpů, a nesmyslný předpoklad že by /[A-z]/ mělo matchnout jen písmena), nebo https://wtfjs.com/wtfs/2014-10-07-true-equals-false (překvapení, že !!"string" je true, ať už jde o !!"Ne", !!"true" nebo !!"false") jsou zrovna ukázky chybně navrženého jazyka ...

Dík, ale opakujem: hľadám len problémy z praxe. Problémy pri tvorbe web aplikácií, kde niekto narazil na reálny problém s JS. A nie ďalšie "akademické" debaty o ideálnom jazyku / syntaxe. Wtfjs je pre blbečkov - kto JS ovláda, s "chybami" tam uvedenými ráta.


L.

Re:Problémy s JavaScript v PRAXI
« Odpověď #20 kdy: 26. 09. 2018, 21:40:13 »
Citace od: Vlado kdy 26. 09. 2018, 21:23:50
To nie je problém, to je feature.

Aha, takže jsi opravdu troll. Tak nic.

Vlado

Re:Problémy s JavaScript v PRAXI
« Odpověď #21 kdy: 26. 09. 2018, 21:43:18 »
Citace od: Kolemjdouci kdy 26. 09. 2018, 21:39:19
Citace od: Vlado kdy 26. 09. 2018, 21:32:12
Citace od: Honza kdy 26. 09. 2018, 21:22:35
Citace od: eee kdy 26. 09. 2018, 21:04:14
Uz umi js formatovani retezcu a cisel?
ne, ale řetězec a číslo je v javascriptu totéž:
"111" == 111; -> true
:-)

Nie, nie je. Typeof "111" je reťazec, typeof 111 je číslo. A že nevieš, sa pri porovnaní nekompatibilných typov najprv vykoná implicit coercion, je tvoja neznalosť, nie problém s JS.

Ale kazdej takovej jazyk je pak nebezpecnej svetu, protoze se realne *NEDA* otestovat, jak to bude spolehlive. Leda mit na kazdem tretim radku force typu :) To plati i pro PHP (== vs ===). Nesouhlasim, ze to je o 'nevim'. Je, dle meho, zasadni problem. Nechtel bych, aby muj zivot (treba nekde v aute :) zavisel na tom, jestli se nahodou neco (ne)povede. Z meho pohledu: to co selze pokazdy je o 10 radu lepsi, nez to co selze 'nekdy'. Treba kvuly zapomenutymu testu na '.' nekde kdesi naprosto jinde v kodu (a je z toho hnedle float)

Kolemjdouci

Len nevieš o čom hovoríš a tvoj scenár z dynamicky typovaných jazykov vôbec automaticky nevyplýva.

Vlado

Re:Problémy s JavaScript v PRAXI
« Odpověď #22 kdy: 26. 09. 2018, 21:55:08 »
Citace od: BoneFlute kdy 26. 09. 2018, 21:28:12
1. monkey patching. Nevidím problém v možnosti přidat nějakou metodu jako takové. Ale v tom, že bez varování mohu přepisovat existující, to mi přijde nešikovné.
2. jazyk je to strašně ukecanej, na to, že toho zase tolik neumí
3. žádná podpora pro zapouzdření. Zapouzdřenost ala Python by mi stačila.
4. nejednotnost - třeba jazyk Lua má pro "nic" jen jednu hodnotu. A můžeš na ni normálně "šahat", chybu ti vyhodí tepreve nil of nil. Javascript má undefined, null, '', 0, false. Vytváření objektu jde taky dělat na několik způsobů, včetně pravěkého "new".
5. absence foreach mě furt nutila přecházet do transpilerů
6. má typy ale nemá statické typování - prvé bez druhého podle mého nemá vůbec žádný smysl. Buď ať je to dynamický jazyk bez typů (příklad Lua, Erlang), nebo staticky typovaný.

1. Ide to. Object.defineProperty()
2. Nepodstatné
3. Isteže nemá, je postavený na inom princípe, zrovnávaš hrušky s jablkami.
4. Nepodstatné, stačí vedieť čo robíš.
5. Má foreach.
6. Len tvoj názor. Ide použiť tak ako je, to nie je praktický problém.

Vlado

Re:Problémy s JavaScript v PRAXI
« Odpověď #23 kdy: 26. 09. 2018, 21:58:29 »
Citace od: L. kdy 26. 09. 2018, 21:40:13
Citace od: Vlado kdy 26. 09. 2018, 21:23:50
To nie je problém, to je feature.

Aha, takže jsi opravdu troll. Tak nic.

Alebo len nemám trpezlivosť s mudrlantov, čo sa vyjadrujú o veciach o ktorých nič nevedia... Ešte raz: toto má byť o problémoch z praxe, nie o pseudointelektuálnych žvástoch ako je tu zvykom. Ak robíš aktívne v JS na konkrétnom projekte a máš kvôli JS konkrétny problém, píš. Inak mlč.

Vlado

Re:Problémy s JavaScript v PRAXI
« Odpověď #24 kdy: 26. 09. 2018, 22:02:25 »
Dve stránky kecov a ani jeden praktický problém. Len samá teória, mudrovanie, porovnávanie, ale skutočný problém ANI JEDEN???

Sajfi

Re:Problémy s JavaScript v PRAXI
« Odpověď #25 kdy: 26. 09. 2018, 22:06:29 »
Citace od: Vlado kdy 26. 09. 2018, 21:32:12
Citace od: Honza kdy 26. 09. 2018, 21:22:35
Citace od: eee kdy 26. 09. 2018, 21:04:14
Uz umi js formatovani retezcu a cisel?
ne, ale řetězec a číslo je v javascriptu totéž:
"111" == 111; -> true
:-)

Nie, nie je. Typeof "111" je reťazec, typeof 111 je číslo. A že nevieš, sa pri porovnaní nekompatibilných typov najprv vykoná implicit coercion, je tvoja neznalosť, nie problém s JS.

Nejde o neznalost, jde o to, že pokud tohle jazyk dělá, tak to může být 1000x napsáno v dokumentaci, ale stále to neznamená, že je to dobrý nápad. A jestli chceš reálný problém, tak zrovna dnes jsme s frontenďákem zkoušeli propojit co dělal on s naším backendem. Jemu to házelo 500, přitom stejný JSON poslaný přes curl vracel přesně co měl. Nakomec se ukázalo, že z JavaScriptu sice šel content-type application/json, v post datech byl JSON, ale ten byl ještě zabalený do řetězce. Takže přesně takové chyby pak tyto "featury" způsobují, v JavaScriptu to v unit testech funguje, ale okolní svět očekává JSON Object, ne String. Nebo má snad okolní svět ty post data parsovat přes json dvakrát?

balki

Re:Problémy s JavaScript v PRAXI
« Odpověď #26 kdy: 26. 09. 2018, 22:09:00 »
Citace od: Vlado kdy 26. 09. 2018, 22:02:25
Dve stránky kecov a ani jeden praktický problém. Len samá teória, mudrovanie, porovnávanie, ale skutočný problém ANI JEDEN???

Myslim, ze ziadne nie su. Je to velmi profesionalny a bezproblemovy jazyk. Povrava sa, ze NASA do neho prepise svoje riadiace systemy.

Puff

Re:Problémy s JavaScript v PRAXI
« Odpověď #27 kdy: 26. 09. 2018, 22:09:58 »
Citace od: balki kdy 26. 09. 2018, 22:09:00
Citace od: Vlado kdy 26. 09. 2018, 22:02:25
Dve stránky kecov a ani jeden praktický problém. Len samá teória, mudrovanie, porovnávanie, ale skutočný problém ANI JEDEN???
Myslim, ze ziadne nie su. Je to velmi profesionalny a bezproblemovy jazyk. Povrava sa, ze NASA do neho prepise svoje riadiace systemy.
Ano, řídí se příkladem Slovenské vesmírné agentury.

Vlado

Re:Problémy s JavaScript v PRAXI
« Odpověď #28 kdy: 26. 09. 2018, 22:12:22 »
Citace od: Sajfi kdy 26. 09. 2018, 22:06:29
Citace od: Vlado kdy 26. 09. 2018, 21:32:12
Citace od: Honza kdy 26. 09. 2018, 21:22:35
Citace od: eee kdy 26. 09. 2018, 21:04:14
Uz umi js formatovani retezcu a cisel?
ne, ale řetězec a číslo je v javascriptu totéž:
"111" == 111; -> true
:-)

Nie, nie je. Typeof "111" je reťazec, typeof 111 je číslo. A že nevieš, sa pri porovnaní nekompatibilných typov najprv vykoná implicit coercion, je tvoja neznalosť, nie problém s JS.

Nejde o neznalost, jde o to, že pokud tohle jazyk dělá, tak to může být 1000x napsáno v dokumentaci, ale stále to neznamená, že je to dobrý nápad. A jestli chceš reálný problém, tak zrovna dnes jsme s frontenďákem zkoušeli propojit co dělal on s naším backendem. Jemu to házelo 500, přitom stejný JSON poslaný přes curl vracel přesně co měl. Nakomec se ukázalo, že z JavaScriptu sice šel content-type application/json, v post datech byl JSON, ale ten byl ještě zabalený do řetězce. Takže přesně takové chyby pak tyto "featury" způsobují, v JavaScriptu to v unit testech funguje, ale okolní svět očekává JSON Object, ne String. Nebo má snad okolní svět ty post data parsovat přes json dvakrát?

O čom to hovoríš? Ako "dvakrát"? Prijatý JSON je VŽDY a VŠADE string.

Honza

Re:Problémy s JavaScript v PRAXI
« Odpověď #29 kdy: 26. 09. 2018, 22:12:58 »
Citace od: Sajfi kdy 26. 09. 2018, 22:06:29
Nejde o neznalost, jde o to, že pokud tohle jazyk dělá, tak to může být 1000x napsáno v dokumentaci, ale stále to neznamená, že je to dobrý nápad.

Přesně tak, to si také myslím. Jinak tenhle argument, že "je to přece v dokumentaci", ten se tu bohužel objevuje docela dost často.