Problémy s JavaScript v praxi

Re:Problémy s JavaScript v praxi
« Odpověď #360 kdy: 05. 10. 2018, 14:07:10 »
odprezentovať bývalím kolegom
Máš tu zase "překlep", bývalím -> mývalím. Pokud to ovšem mělo být "bývalým", tak to není překlep, ale pravopis retarda  :) Neber si to osobně  ;)

Neberiem si to osobne retarde. Prvá definícia trola na fórach znie upozorňovanie na gramatiku, nie vyjadrovanie sa k obsahu. Takže nie, nenoj, naozaj mi je ten preklep spolu s tebou ukradnutý.


Re:Problémy s JavaScript v praxi
« Odpověď #361 kdy: 05. 10. 2018, 14:10:32 »
Keď murár konečne dogooglil
Už se ti povedlo zjistit, co to je HMTS? Minules to ani neuměl opsat ("HTMS"), možná proto ti Google neporadil. Ale nic si z toho nedělej, i mistr tesař se někdy utne, absolvent zvláštní školy jako ty na to právo třikrát denně  ;)

Ale ja viem presne čo to je. V tvojom konkrétnom prípade je to vygooglený argument o ktorého pointe nevieš ani ň. Takých argumentátorov ako ty ale fakt vyseriem denne aj troch, aspoň v tom sa nemýliš.

Re:Problémy s JavaScript v praxi
« Odpověď #362 kdy: 05. 10. 2018, 14:19:41 »
Zásadním problémem JS taky je, že Ryan Dahl (autor node.js) ho kritizuje a místo node.js doporučuje Go.
On kritizuje spíš návrh node.js :) A je příznivcem staticky typovaného systému, takže třeba prosazuje víc TypeScript oproti JS.
Ne, on zcela jednoznačně doporučuje Go jako nejlepší volbu pro aplikace s NIO.

A to někde rozporuji?

S typovým systémem to nijak nesouvisí.

A to si poslechnu na základě čeho jsi k tomu došel. :)

eee

Re:Problémy s JavaScript v praxi
« Odpověď #363 kdy: 05. 10. 2018, 14:46:00 »
Potom prídem na nejaké bezvýznamné fórum, kde anonymne každý druhý 20 ročný murár s fušovaním do programovania ako s voľnočasovou aktivitou sa cíti povolaný kritizovať nejaký jazyk. A to nie preto, žeby ho v dobe jeho vzniku vedel za daných podmienok navrhnúť lepšie. Nevedel. Ani jeden jediný z tých kritikov. Tak prečo potom kritizujú?
...
Ďalšie možné dôvody sa mi nechce písať, stačí ak si uvedomíte jedno: ak aj máš akademický background, nestrápňuj sa kritikou JS, lebo v danej dobe, za daných podmienok, za danej úrovne techniky a teórie, by si JS navrhol lepšie. A uvedom si, že to vedia aj vývojári JS a neopravili dané problémy len preto, aby ostal spätne kompatibilný.
...
Happy coding, ovce ;)
LOL, to me vazne rozesmalo :-). Takze zpackany JS se nesmi kritizovat proto, ze kritik by udajne nedokazal navrhnout lepsi jazyk. Hmm, tak to vlastne skoro nikdo nesmi nic kritizovat. Mohu byt s paskvilem alespon tise nespokojeny, nebo se musim tvarit radostne?

V seznamu duvodu, proc lide kritizuji JS, ti chybi ten hlavni. Je to jazyk nelogicky a nekonzistentne navrhnuty a holt to nekímu vadi :-).

andy

Re:Problémy s JavaScript v praxi
« Odpověď #364 kdy: 05. 10. 2018, 14:47:24 »
Citace
Potom prídem na nejaké bezvýznamné fórum, kde anonymne každý druhý 20 ročný murár s fušovaním do programovania ako s voľnočasovou aktivitou sa cíti povolaný kritizovať nejaký jazyk. A to nie preto, žeby ho v dobe jeho vzniku vedel za daných podmienok navrhnúť lepšie. Nevedel. Ani jeden jediný z tých kritikov. Tak prečo potom kritizujú?
Protože otázka byla, jaké jsou dnes praktické problémy JS. Ne, zda někdo z přítomných byl v té době s tehdejšími znalostmi schopen něco podobného navrhnout.... Nemáš trochu problém udržet téma (a myšlenku)?

Citace
Prvý: ješitnosť. Keď murár konečne dogooglil, že najviac hype je okolo Go, tak sa s vypätím posledných síl po šichte naučil na ubytovni pri sviečke aspoň základný syntax Go a ako prvé sa nerozhodol niečo naprogramovať, nemá na čom, notebook by mu zo skrine ukradol jeden z desiatich ukrajinských spolubývajúcich, no tak aspoň hejtuje z mobilu na fórach každý jazyk, ktorý nemá rovnaký syntax ako Go.
Go má skvěle udělaný runtime s non-blocking IO. Což je to, k čemu se v tom článku vyjadřoval... nebo snad máš pocit, že Go tohle zrovna dobře udělané nemá?

Citace
Druhý možný dôvod nie je o nič lepší: nedostatok znalostí / praxe. Kuchár, ktorý sa časom naučil programovať, typicky v PHP, ale tam aj končí jeho rozhľad. Nevie, že existuje mnoho jazykov postavených na rôznych paradigmách a nikdy sa nedelia na dobré a zlé, ale podľa účelu za ktorým vznikli a podľa vhodnosti či nevhodnosti na ten či onen typ úlohy. Bez tohoto potrebného nadhľadu a hlbšej znalosti teórie programovania tak delia jazyky jediným spôsobom: na dobré a zlé. Presnejšie na ten jediný čo vedia a "tie ostatné".
Několik lidí tady má velké zkušenosti třeba s Haskellem a při té příležitosti se v podstatě nevyhneš tomu občas nějaký ten jazyk navrhnout a k tomu si nějaký ten interpret napsat....  mně naopak připadá, že člověk, který tohle obsáhne, začne mít vcelku dobrou představu o tom, co je dobré a zlé, proč jsou statické typy dobré, proč jsou některé věci prasárny a proč by je jazyk vůbec neměl povolovat....
Citace
Ďalším dôvodom je nedostatok kritického myslenia: programátor, ktorý sa naučil programovať hlavne z tutoriálov na nete a tak čokoľvek, čo nájde na nete napísané, považuje za slovo božie. Vlastné názory, premýšľanie nad tématikou, to je mimo neho, to je nad jeho mentálne kapacity a ak sa k niečomu vyjadrí, najskôr si vygoogli cudzie argumenty a potom si sem len nakopíruje, či nalinkuje.
Tak nějak si říkám, jestli problémem nebude Tvoje ego...

Citace
Ďalšie možné dôvody sa mi nechce písať, stačí ak si uvedomíte jedno: ak aj máš akademický background, nestrápňuj sa kritikou JS, lebo v danej dobe, za daných podmienok, za danej úrovne techniky a teórie, by si JS navrhol lepšie. A uvedom si, že to vedia aj vývojári JS a neopravili dané problémy len preto, aby ostal spätne kompatibilný.
Když ty máš pocit, že to je pořád o egu, jestli je někdo lepší než ty. Ale otázka byla věcná - má dneska, s tím, co dneska víme a očekáváme, JS nějaké praktické problémy? A má - je to z dnešního pohledu naprosto tragický jazyk. A byl i z tehdejšího pohledu, pokud vím, tak oni prostě potřebovali navrhnout "nějaký" jazyk, tak to nějak spatlali a nikdo netušil, že to bude mít takový úspěch.

Jinak v tehdejší době vznikl Erlang, který by klidně místo JS v tom prohlížeči běžet mohl a návrh má mnohem lepší (protože si s tím v té době s tehdejší teorií a technikou dali práci, protože věděli, že chtějí mít dobrý jazyk).

Citace
Ale aby som aj ja len nekritizoval, tu je návod ako na JS pre  menej bystrých: nainštaluj si VS Code, nainštaluj si Flow, maj zapnutý Linter a nastav aby Ti Flow zbehol kód pri ukladaní a každý kód začni dvoma riadkami:
Ano, JS žádné problémy nemá, ale nainstalujte si statický type checker....


eee

Re:Problémy s JavaScript v praxi
« Odpověď #365 kdy: 05. 10. 2018, 14:48:06 »
Kód: [Vybrat]
// @flow
'use strict'

Potom nebudete mať problém s vašimi "neprekonateľnými problémami" s JS. Žiadne == nebude povolené, iba ===, žiadne nesprávne typy odovzdané funkciám, na všetko budete upozornení.

A jak se prosim bez == porovnavaji hodnoty?

Re:Problémy s JavaScript v praxi
« Odpověď #366 kdy: 05. 10. 2018, 14:55:22 »
Kód: [Vybrat]
// @flow
'use strict'

Potom nebudete mať problém s vašimi "neprekonateľnými problémami" s JS. Žiadne == nebude povolené, iba ===, žiadne nesprávne typy odovzdané funkciám, na všetko budete upozornení.

A jak se prosim bez == porovnavaji hodnoty?

Veď je to tam napísané... Pomocou ===?

eee

Re:Problémy s JavaScript v praxi
« Odpověď #367 kdy: 05. 10. 2018, 15:16:38 »
Kód: [Vybrat]
// @flow
'use strict'

Potom nebudete mať problém s vašimi "neprekonateľnými problémami" s JS. Žiadne == nebude povolené, iba ===, žiadne nesprávne typy odovzdané funkciám, na všetko budete upozornení.

A jak se prosim bez == porovnavaji hodnoty?

Veď je to tam napísané... Pomocou ===?
Takze new String('aa') === new String('aa') zacne zazracne fungovat? Jak tedy potom porovnam identitu objektu? Uz chapes? Timhle jen zakazes nektere hlouposti, ale z blbeho navrhu dobry neudelas.

Re:Problémy s JavaScript v praxi
« Odpověď #368 kdy: 05. 10. 2018, 15:34:40 »
Kód: [Vybrat]
// @flow
'use strict'

Potom nebudete mať problém s vašimi "neprekonateľnými problémami" s JS. Žiadne == nebude povolené, iba ===, žiadne nesprávne typy odovzdané funkciám, na všetko budete upozornení.

A jak se prosim bez == porovnavaji hodnoty?

Veď je to tam napísané... Pomocou ===?
Takze new String('aa') === new String('aa') zacne zazracne fungovat? Jak tedy potom porovnam identitu objektu? Uz chapes? Timhle jen zakazes nektere hlouposti, ale z blbeho navrhu dobry neudelas.

Jediné zlé je na tom to, že používaš operátor === na to, na čo nie je určený. Na porovnávanie objektov treba použiť Object.is() metódu.

Kód: [Vybrat]
let a = new String('aa')
let b = new String('aa')

console.log(Object.is(a, b))


agent

Re:Problémy s JavaScript v praxi
« Odpověď #369 kdy: 05. 10. 2018, 15:55:33 »
Takze new String('aa') === new String('aa') zacne zazracne fungovat? Jak tedy potom porovnam identitu objektu? Uz chapes? Timhle jen zakazes nektere hlouposti, ale z blbeho navrhu dobry neudelas.
Nemůžeš chtít, aby stejně napsaná věc najednou od nějaké verze JS začala fungovat jinak - zpětná kompatibilita je JS důležitá, protože zdrojové kódy a interpret jsou v zásadě při každém spuštění z různých nezávislých zdrojů, přičemž ty zdrojáky můžou být klidně 20 let staré (na 20 let staré webové stránce, na kterou od té doby nikdo nesáhl) - a nikdo nechce, aby najednou přestaly fungovat a všechny starší stránky s JS se musely zahodit nebo přepsat.
Jediné řešení by byla standardizace dalšího jazyka (nějaké nové moderní verze JS bez zpětné kompatibility nebo úplně jiného jazyka) v browseru <script language="XYZ">. Ale to by museli chtít Google, Mozilla a Microsoft.
Na backend straně žádné omezení není, komu JS (a tedy node.js) nevyhovuje, má desítky dalších možností v čem psát.
 

andy

Re:Problémy s JavaScript v praxi
« Odpověď #370 kdy: 05. 10. 2018, 16:13:39 »
Takze new String('aa') === new String('aa') zacne zazracne fungovat? Jak tedy potom porovnam identitu objektu? Uz chapes? Timhle jen zakazes nektere hlouposti, ale z blbeho navrhu dobry neudelas.
Nemůžeš chtít, aby stejně napsaná věc najednou od nějaké verze JS začala fungovat jinak - zpětná kompatibilita je JS důležitá, protože zdrojové kódy a interpret jsou v zásadě při každém spuštění z různých nezávislých zdrojů, přičemž ty zdrojáky můžou být klidně 20 let staré (na 20 let staré webové stránce, na kterou od té doby nikdo nesáhl) - a nikdo nechce, aby najednou přestaly fungovat a všechny starší stránky s JS se musely zahodit nebo přepsat.
Jediné řešení by byla standardizace dalšího jazyka (nějaké nové moderní verze JS bez zpětné kompatibility nebo úplně jiného jazyka) v browseru <script language="XYZ">. Ale to by museli chtít Google, Mozilla a Microsoft.
Na backend straně žádné omezení není, komu JS (a tedy node.js) nevyhovuje, má desítky dalších možností v čem psát.
A proto tu máme "use strict", což je v podstatě jiný jazyk....

Pořád nechápu, co se snažíte říct: že ty problémy v JS vlastně nejsou problémy, protože potřebujeme zpětnou kompatibilitu? Nebo že to nejsou problémy, protože by to v té době málokdo navrhl lépe? (což není pravda, IMO kdyby ti lidi věděli, jak to bude úspěšné, tak by to sami navrhli líp). Nebo že to nejsou problémy, protože potřebujeme zpětnou kompatibilitu?

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #371 kdy: 05. 10. 2018, 16:14:04 »
Jediné řešení by byla standardizace dalšího jazyka (nějaké nové moderní verze JS bez zpětné kompatibility nebo úplně jiného jazyka) v browseru <script language="XYZ">. Ale to by museli chtít Google, Mozilla a Microsoft.
Na backend straně žádné omezení není, komu JS (a tedy node.js) nevyhovuje, má desítky dalších možností v čem psát.
Hodně se používají transpilery. Takže ani v browseru to omezení není.

Otázka zněla na problém s javascriptem v praxi. A zdá se, že vlastně skutečně žádné nemá. Protože komu nevyhovuje, ten používá něco jiného :-)

eee

Re:Problémy s JavaScript v praxi
« Odpověď #372 kdy: 05. 10. 2018, 16:41:20 »
Kód: [Vybrat]
// @flow
'use strict'

Potom nebudete mať problém s vašimi "neprekonateľnými problémami" s JS. Žiadne == nebude povolené, iba ===, žiadne nesprávne typy odovzdané funkciám, na všetko budete upozornení.

A jak se prosim bez == porovnavaji hodnoty?

Veď je to tam napísané... Pomocou ===?
Takze new String('aa') === new String('aa') zacne zazracne fungovat? Jak tedy potom porovnam identitu objektu? Uz chapes? Timhle jen zakazes nektere hlouposti, ale z blbeho navrhu dobry neudelas.

Jediné zlé je na tom to, že používaš operátor === na to, na čo nie je určený. Na porovnávanie objektov treba použiť Object.is() metódu.

Kód: [Vybrat]
let a = new String('aa')
let b = new String('aa')

console.log(Object.is(a, b))

Dává ten samý výsledek jako === :-).

To prostě neokecáš a mám v zásobě spoustu dalších špeků, třeba tento je také povedený.


null == 0
null === 0
null > 0
null >= 0


Kdo si tipne výsledeky?  :-)

eee

Re:Problémy s JavaScript v praxi
« Odpověď #373 kdy: 05. 10. 2018, 16:47:06 »
Takze new String('aa') === new String('aa') zacne zazracne fungovat? Jak tedy potom porovnam identitu objektu? Uz chapes? Timhle jen zakazes nektere hlouposti, ale z blbeho navrhu dobry neudelas.
Nemůžeš chtít, aby stejně napsaná věc najednou od nějaké verze JS začala fungovat jinak - zpětná kompatibilita je JS důležitá, protože zdrojové kódy a interpret jsou v zásadě při každém spuštění z různých nezávislých zdrojů, přičemž ty zdrojáky můžou být klidně 20 let staré (na 20 let staré webové stránce, na kterou od té doby nikdo nesáhl) - a nikdo nechce, aby najednou přestaly fungovat a všechny starší stránky s JS se musely zahodit nebo přepsat.
Jediné řešení by byla standardizace dalšího jazyka (nějaké nové moderní verze JS bez zpětné kompatibility nebo úplně jiného jazyka) v browseru <script language="XYZ">. Ale to by museli chtít Google, Mozilla a Microsoft.
Na backend straně žádné omezení není, komu JS (a tedy node.js) nevyhovuje, má desítky dalších možností v čem psát.

Chtít to mohu a řešitelné to je. Ať v rámci mechanismu 'use strict' či jeho obdobě nebo v rámci JS2, protože html mi dává možnost volat různé jazyky. S různými verzemi html se prohlížeče také vyrovnali.

eee

Re:Problémy s JavaScript v praxi
« Odpověď #374 kdy: 05. 10. 2018, 17:09:03 »
Takze new String('aa') === new String('aa') zacne zazracne fungovat? Jak tedy potom porovnam identitu objektu? Uz chapes? Timhle jen zakazes nektere hlouposti, ale z blbeho navrhu dobry neudelas.
Nemůžeš chtít, aby stejně napsaná věc najednou od nějaké verze JS začala fungovat jinak - zpětná kompatibilita je JS důležitá, protože zdrojové kódy a interpret jsou v zásadě při každém spuštění z různých nezávislých zdrojů, přičemž ty zdrojáky můžou být klidně 20 let staré (na 20 let staré webové stránce, na kterou od té doby nikdo nesáhl) - a nikdo nechce, aby najednou přestaly fungovat a všechny starší stránky s JS se musely zahodit nebo přepsat.
Jediné řešení by byla standardizace dalšího jazyka (nějaké nové moderní verze JS bez zpětné kompatibility nebo úplně jiného jazyka) v browseru <script language="XYZ">. Ale to by museli chtít Google, Mozilla a Microsoft.
Na backend straně žádné omezení není, komu JS (a tedy node.js) nevyhovuje, má desítky dalších možností v čem psát.

Chtít to mohu a řešitelné to je. Ať v rámci mechanismu 'use strict' či jeho obdobě nebo v rámci JS2, protože html mi dává možnost volat různé jazyky. S různými verzemi html se prohlížeče také vyrovnali.

Další možné řešení je rozšíření jazyka. Operátor == je tak zprasen, že se v podstatě zakazuje používat a doporučuje se používat místo něj ===. Ani zdaleka to neřeší všechny problémy, ale nějaké přeci jen. Ale bohuželnuž JS nezná nic jako >== a <==. Blbě implementované třízení polí by šlo řešit novou metodou array.sort2() (sort_strict, ...) a tak dále.