Problémy s JavaScript v praxi

eee

Re:Problémy s JavaScript v praxi
« Odpověď #75 kdy: 27. 09. 2018, 16:07:01 »
Nebo tohle taky pobaví:

var a = [1,2,3];
var b = [1,2,3];

a == b // false


avc

Re:Problémy s JavaScript v praxi
« Odpověď #76 kdy: 27. 09. 2018, 16:07:32 »
Proste cim vacsie firmy za tym su, tym to je stabilnejsie, viac toolingu, vsade komercna podpora, ...

Jistě, takový Windows 10 jsou krásným důkazem.

neviem co ma windows 10 spolocne s programovacimi jazykmi.

Ano, C# a Java je vendor lock-in jak svina (aspon co sa C# tyka tak viac menej skoro urcite) ale co s tym akoze ma dev co nechce zarabat 30k v hrubom robit? To je sucast toho jobu.

Cim rozsirenejsi ten jazyk je, tym tazsie je ho zabit, pretoze sa na to nabaluje milion dalsich technologii na ktore nie je ziadna nahrada. Nejaky prdlackovy web v ruby sa nahradi relativne lahko, ale nejake Java a C# backendy nejake Go len tak nenahradi, aj ked to je mokry sen vela ludi

Skus sa zamysliet naco je taky programovaci jazyk, ak chces patrit medzi fanusikov "najlepsich" skus radsej pozerat a fandit futbalovemu muzstvu. Programovaci jazyk je o vyjadreni myslienky urcitym sposobom a ci sa ti to paci alebo nie, skoro kazdy jazyk sa hodi na nieco ine. Skus v C robit webovku, alebo v PHP pisat nejaky ovladac. Vidis?

eee

Re:Problémy s JavaScript v praxi
« Odpověď #77 kdy: 27. 09. 2018, 16:13:25 »
Takze v JS je prakticky problem pri praci s cisly, pri prace s retezci, pri praci s datovymi typy a to nejen pri porovnavani hodnot. Tedy v naprostych zakladech jazyka. Troufnu si tvrdit, ze JS neumi porovnat dve hodnoty, chybi mu na to operator, viz priklady vyse.

Vlado

Re:Problémy s JavaScript v praxi
« Odpověď #78 kdy: 27. 09. 2018, 16:31:20 »
Ako vidím, žiadna zmena. Stále sem vypisujú predovšetkým lopaty a len málo reálnych web developerov. Lopaty ktoré doteraz všetky stránky generujú na serveri a loose coupled architektúry im nič nehovoria a v živote by nedokázali nakódiť SPA, či nebodaj rovno PWA apku. Čo sa divím, lebo ešte aj Vaadin začal používať web komponenty na frontende, konkrétne Polymérové a aj podľa Java developerov to značne uľahčuje a urýchľuje vývoj. Ale tak zdá sa, že nie len mentálne, ešte aj znalostne ste pozadu. Čo už, väčší priestor pre uplatnenie, vlastne dík...

eee

Re:Problémy s JavaScript v praxi
« Odpověď #79 kdy: 27. 09. 2018, 16:39:08 »
 Mimochodem v Pythonu


a = [1,2,3]
b = [1,2,3]

a == b // false
a is b // true


PHP také dokáže vyhodnotit správně equalitu. LUA to nedokáže.


.

Re:Problémy s JavaScript v praxi
« Odpověď #80 kdy: 27. 09. 2018, 16:44:16 »
Hledal jsi problémy z praxe, tak ti jeden dám. Sice je z oblasti, kterou jsi vyfiltroval, ale je to reálný problém použití JS na serveru. Na začátek jen doplním, že nejsem žádný JS hater, první aplikace v node.js jsem psal v době, kdy zdejší mistři ani netušili, že něco takového vůbec existuje (verze 0.4).

Jednalo se o streamovací aplikaci, která načítala na portu stream dat, modifikovala jej a obohacovala o data z databáze a přeposílala dále. Node.js byl použit z důvodu výkonosti, jednoduchosti a rychlosti vývoje (na začátku to byl spíš prototyp).

Protože se nejednalo o webovou službu, vznikl dodatečně požadavek, aby výsledkem byla binárka. Sice to přineslo první komplikace a předělávání, ale povedlo se. Další komplikace vznikla, když zákazník požadoval nasazení na RHEL6, který, ale oficiálně node.js nepodporoval (tehdy verze 4.x). Po různých (poměrně komplikovaných hacích) se i toto povedlo a zhruba rok jela aplikace v produkci. [Přes zmíněné komplikace je potřeba říct, že to vše šlo poměrně hladce a hlavně rychle.] Pak přišly požadavky na doplnění a hlavně se objevil problém/bug. Trochu se změnila struktura vstupních dat a jedno pole, které kolidovalo s JS objektem se nepropagovalo.

V té chvíli došlo k rozhodnutí udělat definitivní krok a přepsat produkční prototyp do kompilovaného jazyka (Go). Díky rozsáhlé standardní knihovně a jedné externí knihovně se rozsah aplikace (SLOC) zmenšil zhruba na polovinu, zásadně se zmenšil počet externích závislostí na 3! (db driver, cache a de-facto standardní balík na práci s chybami, což bylo neuvěřitelné zjednodušení údržby), významně se zjednodušil build proces (kroskompilace) a bylo to naprosto nezávislé na tom, co je pod tím.

Velice komplikovaná a časově náročná údržba závislostí v node.js je důvod, proč jsem node.js více méně úplně opustil, i když vývoj v něm je extrémně rychlý a nesmírně produktivní. Pokud to porovnám právě s Go, vývoj v jazyce Go není příliš pomalejší, ale poprodukční údržba projektu je o řád jednodušší. Zvláště třeba u webových služeb, kde vše (včetně šablon a assetů) zabalím do jedné binárky.

tralala

Re:Problémy s JavaScript v praxi
« Odpověď #81 kdy: 27. 09. 2018, 16:44:53 »
Proste cim vacsie firmy za tym su, tym to je stabilnejsie, viac toolingu, vsade komercna podpora, ...

Jistě, takový Windows 10 jsou krásným důkazem.

neviem co ma windows 10 spolocne s programovacimi jazykmi.

Ano, C# a Java je vendor lock-in jak svina (aspon co sa C# tyka tak viac menej skoro urcite) ale co s tym akoze ma dev co nechce zarabat 30k v hrubom robit? To je sucast toho jobu.

Cim rozsirenejsi ten jazyk je, tym tazsie je ho zabit, pretoze sa na to nabaluje milion dalsich technologii na ktore nie je ziadna nahrada. Nejaky prdlackovy web v ruby sa nahradi relativne lahko, ale nejake Java a C# backendy nejake Go len tak nenahradi, aj ked to je mokry sen vela ludi

Skus sa zamysliet naco je taky programovaci jazyk, ak chces patrit medzi fanusikov "najlepsich" skus radsej pozerat a fandit futbalovemu muzstvu. Programovaci jazyk je o vyjadreni myslienky urcitym sposobom a ci sa ti to paci alebo nie, skoro kazdy jazyk sa hodi na nieco ine. Skus v C robit webovku, alebo v PHP pisat nejaky ovladac. Vidis?

to je jasna vec, nikto tu nejde pisat weby v cecku, ale pisat nejake backendy v javascripte ... preco by som to robil? na nejake patlaniny na frontende to je dobre.

rovnako nepouzijem jazyky nad jvm tam kde potrebujem ist na zelezo s ceckom

len nechapem, kto si to dobrovolne vyberie na frontende ...

.

Re:Problémy s JavaScript v praxi
« Odpověď #82 kdy: 27. 09. 2018, 16:46:11 »
Nebo tohle taky pobaví:

var a = [1,2,3];
var b = [1,2,3];

a == b // false

Takze v JS je prakticky problem pri praci s cisly, pri prace s retezci, pri praci s datovymi typy a to nejen pri porovnavani hodnot. Tedy v naprostych zakladech jazyka. Troufnu si tvrdit, ze JS neumi porovnat dve hodnoty, chybi mu na to operator, viz priklady vyse.
Nerozumím tomu, proč někdo ze sebe dělá dobrovolně blbce?  :-\

eee

Re:Problémy s JavaScript v praxi
« Odpověď #83 kdy: 27. 09. 2018, 16:48:14 »
Ako vidím, žiadna zmena. Stále sem vypisujú predovšetkým lopaty a len málo reálnych web developerov. Lopaty ktoré doteraz všetky stránky generujú na serveri a loose coupled architektúry im nič nehovoria a v živote by nedokázali nakódiť SPA, či nebodaj rovno PWA apku. Čo sa divím, lebo ešte aj Vaadin začal používať web komponenty na frontende, konkrétne Polymérové a aj podľa Java developerov to značne uľahčuje a urýchľuje vývoj. Ale tak zdá sa, že nie len mentálne, ešte aj znalostne ste pozadu. Čo už, väčší priestor pre uplatnenie, vlastne dík...

Nenech se vysmát lopato bez rozhledu. JavaScript je na webovém frontendě zatím nenahraditelný, to mu zajišťuje široké uplatnění, ale ani o trochu to ze špatně navrženého jazyka nedělá lepší.

fernet

Re:Problémy s JavaScript v praxi
« Odpověď #84 kdy: 27. 09. 2018, 16:48:41 »
Mimochodem v Pythonu


a = [1,2,3]
b = [1,2,3]

a == b // false
a is b // true


PHP také dokáže vyhodnotit správně equalitu. LUA to nedokáže.

Meanwhile
Kód: [Vybrat]
Python 3.5.3 (default, Jan 19 2017, 14:11:04)                       
Type 'copyright', 'credits' or 'license' for more information       
IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help. 
                                                                     
In [1]: a = [1,2,3]                                                 
   ...: b = [1,2,3]                                                 
   ...:                                                             
   ...:                                                             
                                                                     
In [2]: a==b                                                         
Out[2]: True                                                         
                                                                     
In [3]: a is b                                                       
Out[3]: False                                                       

eee

Re:Problémy s JavaScript v praxi
« Odpověď #85 kdy: 27. 09. 2018, 16:53:18 »
to je jasna vec, nikto tu nejde pisat weby v cecku, ale pisat nejake backendy v javascripte ... preco by som to robil? na nejake patlaniny na frontende to je dobre.

Ani na frontend to není dobrý, ale prostě nic lepšího není.

eee

Re:Problémy s JavaScript v praxi
« Odpověď #86 kdy: 27. 09. 2018, 16:59:57 »
Nebo tohle taky pobaví:

var a = [1,2,3];
var b = [1,2,3];

a == b // false

Takze v JS je prakticky problem pri praci s cisly, pri prace s retezci, pri praci s datovymi typy a to nejen pri porovnavani hodnot. Tedy v naprostych zakladech jazyka. Troufnu si tvrdit, ze JS neumi porovnat dve hodnoty, chybi mu na to operator, viz priklady vyse.
Nerozumím tomu, proč někdo ze sebe dělá dobrovolně blbce?  :-\

Tak já to zkusím ještě jednodušeji:


JS:  [1, 2, 3] == [1, 2, 3] // false
PY:  [1, 2, 3] == [1, 2, 3] // true
PHP: [1, 2, 3] == [1, 2, 3] // true



eee

Re:Problémy s JavaScript v praxi
« Odpověď #87 kdy: 27. 09. 2018, 17:02:20 »
Meanwhile
Díky za upozornění, přehodil jsem popisky.

tralala

Re:Problémy s JavaScript v praxi
« Odpověď #88 kdy: 27. 09. 2018, 17:04:07 »
Nebo tohle taky pobaví:

var a = [1,2,3];
var b = [1,2,3];

a == b // false

Takze v JS je prakticky problem pri praci s cisly, pri prace s retezci, pri praci s datovymi typy a to nejen pri porovnavani hodnot. Tedy v naprostych zakladech jazyka. Troufnu si tvrdit, ze JS neumi porovnat dve hodnoty, chybi mu na to operator, viz priklady vyse.
Nerozumím tomu, proč někdo ze sebe dělá dobrovolně blbce?  :-\

Tak já to zkusím ještě jednodušeji:


JS:  [1, 2, 3] == [1, 2, 3] // false
PY:  [1, 2, 3] == [1, 2, 3] // true
PHP: [1, 2, 3] == [1, 2, 3] // true


ja len dodam :D


scala> List(1,2,3) == List(1,2,3)
res0: Boolean = true

agent

Re:Problémy s JavaScript v praxi
« Odpověď #89 kdy: 27. 09. 2018, 17:04:33 »
Nebo tohle taky pobaví:

var a = [1,2,3];
var b = [1,2,3];

a == b // false

A co je na tom divného?
V JS je pole objekt.
Porovnáním object == object jen otestuješ, jestli jde o tentýž objekt (proto a == a vrátí true).
JS bohužel nemá žádnou metodu nebo funkci na porovnání obsahu dvou objektů, ale pro běžné případy se to dá vcelku jednoduše obejít: :) (nebo si na to napsat plnohodnotnou metodu na porovnání)
JSON.stringify(a) == JSON.stringify(b); // true