Problémy s JavaScript v praxi

Re:Problémy s JavaScript v praxi
« Odpověď #255 kdy: 04. 10. 2018, 14:13:06 »
Takže vďaka tomu ty píšeš len dokonalý kód. Programy ktoré produkuje školy bežia dokonale, bez jedinej chyby. Tak?
Ne, píšu kód, ve kterém se chyby určitého typu nevyskytují.
A vieš, že podľa jednej štúdie majú statické typy len 4% vplyv na hustotu výskytu chýb oproti dynamicky typovaným?
:) A podle té druhé...?  Experti říkají....... špatně jsem se vyspal, asi dneska nechápu vtipy...
Na typový systém sa dnes nikto nespolieha. Ani na statický, ani na dynamický. Každý skutočný programátor píše k svojim funkciám rovno aj testy
Potom software vypadá tak, jak vypadá, když ho píšou retardi jako ty, co ani neví, co to typ je.

Tak to si len potvrdil čo som si myslel
 Si naprostá lopata :/ A vraj programátor...


Re:Problémy s JavaScript v praxi
« Odpověď #256 kdy: 04. 10. 2018, 14:13:25 »
Citace
Já mám zato, že je fajn si hlídat, co kam předávám.
Aha...takže nejen, že se musím zabývat tím, že tu funkci napíšu a odladím, ale ještě ke všemu vlastně k tomu pochopení co ta funkce dělá (a má dělat) musím zkontrolovat, kde všude je volaná.... v pythonu to aspoň zbuchne, když to tím proběhne, ne že to vrátí "něco".
Ano, je to vhodný programátorský návyk. Buď funkci volám tak, že vždycky vím, že jí pošlu korektní vstup, nebo to v ní ošetřím. V C snad taky ve funkci kontroluješ, že jsi nedostal NULL a pak ho tam můžeš poslat, nebo nekontroluješ, ale dáváš si sakra pozor, aby sis byl "jistý", že jí tam nepřijde.
V Javě si parametr označím jako @NonNull a překladač mi případně vynadá. Když tam ten NULL přijde, tak to slítne, ne že to vrátí nějaký poněkud neočekávaný výsledek.

Tohle je mimochodem supr na silných typových systémech - já prostě nemusím řešit, kdo to kde volá. Ta funkce prostě v typu specifikuje, co je korektní parametr a očekávání je, že v rámci těchto mezí by měla vracet korektní výsledky. A pak prostě nemusím řešit, kdo kde jak tu funkci volá.

Nemám dojem, že bych mluvil o Javě. Pointa byla jasná.

Já mám rád "silné" typové systémy, třeba takový Haskell je fakt super. ALE nebudu kvůli tomu odsuzovat jazyky, které na to jdou jinak. Když neumím programovat bez silných typů, tak to nebudu dělat (projde-li mi to), ale nebudu psát, jak jsou všechny "slaběji" typované jazyky na nic. V takovém případě bych byl tak akorát debil.

Jinak je ti doufám jasné, že i v JavaScriptu taky můžeš hlídat, jestli jsi dostal číslo, nebo string, nebo... žejo? :D

Citace
Citace
Uživatelský vstup člověk ošetří, zbytek programu mám 100% pod kontrolou. Čili vím, CO té funkci dávám -> vím, co to udělá.
Super pro větší projekty, nedejbože když tam je víc lidí...
A vidíš, dá se to. :) Je to jen o tom, jak jsou lidi zvyklí programovat. Pokud se někdo takto spoléhá na typový systém, tak si zaslouží, aby ho to vyšplouchlo. Dá se to (a celkem hezky), ale chce to daleko větší sebekázeň, protože programátorovi takové jazyky spoustu dovolí.
Ono se dá škrábat i levou nohou za pravým uchem... ale tak nějak nechápu proč odpověď "dá se s tím žít" by měla být jakkoliv relevantní k tezi "je to stupidní a způsobuje to problémy". Samozřejmě že code review řeší, když tam nějaký user napíše prasárnu. Stejně tak to řeší jazyk tím, že takovou konstrukci vůbec nepřipustí. Ano, holt jazyky nejsou dokonalé a musíme se s tím nějak naučit žít, ale proč tyhle stupidní vlastnosti obhajujete??

Připomíná mi to jednoho kamaráda - trabanty jsou dobrý, že se na nich dá poměrně snadno prakticky všechno opravit. Ale ono by se to nemuselo opravovat, kdyby se to pořád nerozbíjelo....

Nevidím nikde, že bych nabízel odpověď "dá se s tím žít". Spíš odmítám tvé kategorické "nejde" a nabízím "jde to, ale má to vyšší nároky na programátorovu kázeň" v kontextu toho, že pokud někdo píše jako čuně, tak mu to kompilátor z malé části zatrhne.
Řeknu to jinak, abys to pochopil. Jestli ti přijde ok strkat Int do funkce "duplicateString", tak není chyba v typovém systému. Programovat se dá pěkně i v dynamicky typovaných jazycích jako jsou JavaScript, Perl a další. Stupidní jsou tvé teze.

andy

Re:Problémy s JavaScript v praxi
« Odpověď #257 kdy: 04. 10. 2018, 14:21:00 »
Řeknu to jinak, abys to pochopil. Jestli ti přijde ok strkat Int do funkce "duplicateString", tak není chyba v typovém systému. Programovat se dá pěkně i v dynamicky typovaných jazycích jako jsou JavaScript, Perl a další. Stupidní jsou tvé teze.
Mně to OK nepřijde. Přijde mi to celkem jasně prasárna a nechápu proč to ten jazyk vůbec umožňuje, když to evidentně umožňovat nemusí (viz python). Takže když se někdo ptá na problémy tohoto jazyka, tak tohle mi připadá jako problém.

To je jako když máš přehlídku aut a auto jménem JS má 10x delší brzdnou dráhu než ostatní. Jasně, můžeš jezdit takovým způsobem, abys nenaboural. Ale fakt ti to přijde divný, když to označím jako "problém", který to auto má?

Re:Problémy s JavaScript v praxi
« Odpověď #258 kdy: 04. 10. 2018, 14:27:17 »
Řeknu to jinak, abys to pochopil. Jestli ti přijde ok strkat Int do funkce "duplicateString", tak není chyba v typovém systému. Programovat se dá pěkně i v dynamicky typovaných jazycích jako jsou JavaScript, Perl a další. Stupidní jsou tvé teze.
Mně to OK nepřijde. Přijde mi to celkem jasně prasárna a nechápu proč to ten jazyk vůbec umožňuje, když to evidentně umožňovat nemusí (viz python). Takže když se někdo ptá na problémy tohoto jazyka, tak tohle mi připadá jako problém.

To je jako když máš přehlídku aut a auto jménem JS má 10x delší brzdnou dráhu než ostatní. Jasně, můžeš jezdit takovým způsobem, abys nenaboural. Ale fakt ti to přijde divný, když to označím jako "problém", který to auto má?

Urobíš nesprávne porovnanie, vyjde ti nesprávny výsledok. To divné nie je. Jediné divné je, kam chodíš na tie porovnania. On totiž jediný rozdiel medzi staticky a dynamicky typovaným jazykom je, že si musíš v dynamicky typovanom viac strážiť typy. To je daň za tú väčšiu flexibilitu. Ale v konečnom dôsledku to musíš robiť tak či tak, lebo nejde o pár preklepov pri písaní programu, ale o chyby za behu, o runtime chyby. A tie ti neustráži žiadny jazyk.

asd

Re:Problémy s JavaScript v praxi
« Odpověď #259 kdy: 04. 10. 2018, 14:33:47 »
Věci jako dynamické typy, truthy values a podobně ti dávají větší volnost a dají se díky nim psát stručnější, přehlednější programy. Musíš ale vědět, co děláš(to je důležitá věta - cokoliv se na první pohled může zdát jako naprostý nesmysl, bez zasazení do správného kontextu). Když nejsi ochotný přijmout vyšší zodpovědnost, která provází mnohem vyšší volnost, tak zůstaň u jazyků, které tě sice omezují, ale zároveň chrání. Trochu takový stockholmský syndrom.


Pep

Re:Problémy s JavaScript v praxi
« Odpověď #260 kdy: 04. 10. 2018, 14:36:14 »
Jinak je ti doufám jasné, že i v JavaScriptu taky můžeš hlídat, jestli jsi dostal číslo, nebo string
Jen za běhu. Fakt budeš "kopat" základy lžičkou, když můžeš použít bagr?

andy

Re:Problémy s JavaScript v praxi
« Odpověď #261 kdy: 04. 10. 2018, 14:37:22 »
Na typový systém sa dnes nikto nespolieha. Ani na statický, ani na dynamický. Každý skutočný programátor píše k svojim funkciám rovno aj testy, v zmysle TDD metodiky. Lebo len to je aká taká záruka, že tam nebudú chyby, nie typový systém. A ešte zvlášť sú pri staticky typovaných programátori upozorňovaní, aby testy láskavo nevynechávali, lebo statický systém dáva len pocit falošnej bezpečnosti, až TDD metodika má reálnym vplyv na hustotu výskytu chýb, niekde medzi 25 až 80 percent. Ak toto nevieš, si lopata bez skúseností na reálnom projekte v týme. Čo  si u mňa tak či tak, pokojne si ľahni a spí ďalej, s takýmito názormi tak skoro nebudeš vstávať do práce ;)
Tak nevím. Zkoušel jsi stejný projekt implementovat v nějakým jazyce s pořádným typovým systémem, abys měl srovnání? BTW, nevíš náhodou, proč se dneska tak tlačí TypeScript a Flow?

Pep

Re:Problémy s JavaScript v praxi
« Odpověď #262 kdy: 04. 10. 2018, 14:37:47 »
Věci jako dynamické typy ti dávají větší volnost a dají se díky nim psát stručnější, přehlednější programy.
To je nebetyčná hovadina, viz HMTS.

eee

Re:Problémy s JavaScript v praxi
« Odpověď #263 kdy: 04. 10. 2018, 14:41:00 »
Python je o notny kus lepší než JS, každý se nacházi na opačném konci spektra. Python má jeden z nejepších návrhů (a platí za to už třetí nekompatibální verzí), kdežto javascript má jedn z znejhorších návrhů.
Tak když to říkáš :-)
Python by nebyl tak špatný, kdyby byl staticky typovaný.
Tohle je na úrovni tvrzení, že všechny dynamicky typované jazyky jsou špatné z důvodu dynamického typování. A to je nesmysl. Zrovna tak je nesmysl odsoudit všechny slabě typované jazyky, kam patří i Javascript, za to, že mají slabé typy. Ale ty slabé typy se dají implementovat dobře a nebo špatně a JS je má implementované špatně. PHP má také slabé typy a implementuje je mnohem lépe než JS, ale zase má jiné problémy, řakže nechci, aby to vyznělo tak, žebho dávám za vzor dobrého jazyka. Ani Python není bez chyb a na všem se dá něco vyšťourat, ale imho z rozšířených a hodně používaných jazyků je nejhorší JS, který těží z toho, že má monopooni postavení ve webových prohlížečích. Všude jinde, kde má konkurenci, má marginální postavení.
Dynamicky typovane jazyky, nie su zle pretoze by boli dynymicky typovane, su len prosto nevhodne na cokolvek vetsie ako 100-200 riadkov. Potom zacnu prinasat len problemy.
Jak komu :-). Není s nimi problém ani v o dva rady rozsahlejsich programech.

Re:Problémy s JavaScript v praxi
« Odpověď #264 kdy: 04. 10. 2018, 14:42:41 »
Věci jako dynamické typy ti dávají větší volnost a dají se díky nim psát stručnější, přehlednější programy.
To je nebetyčná hovadina, viz HMTS.

Čo je HTMS?

andy

Re:Problémy s JavaScript v praxi
« Odpověď #265 kdy: 04. 10. 2018, 14:43:04 »
Věci jako dynamické typy, truthy values a podobně ti dávají větší volnost a dají se díky nim psát stručnější, přehlednější programy. Musíš ale vědět, co děláš(to je důležitá věta - cokoliv se na první pohled může zdát jako naprostý nesmysl, bez zasazení do správného kontextu). Když nejsi ochotný přijmout vyšší zodpovědnost, která provází mnohem vyšší volnost, tak zůstaň u jazyků, které tě sice omezují, ale zároveň chrání.
(taky odpověď Wal-De-Mar)
Zkoušel jsi někdy jazyk z pořádným typovým systémem? (haskell, scala, ocaml) Protože pokud jo, tak bych prosil nějaké zdůvodnění, protože tohle IMO naprosto není pravda.

Pep

Re:Problémy s JavaScript v praxi
« Odpověď #266 kdy: 04. 10. 2018, 14:44:32 »
Věci jako dynamické typy ti dávají větší volnost a dají se díky nim psát stručnější, přehlednější programy.
To je nebetyčná hovadina, viz HMTS.
Čo je HTMS?
Googluj, šmudlo.

Re:Problémy s JavaScript v praxi
« Odpověď #267 kdy: 04. 10. 2018, 14:49:31 »
Na typový systém sa dnes nikto nespolieha. Ani na statický, ani na dynamický. Každý skutočný programátor píše k svojim funkciám rovno aj testy, v zmysle TDD metodiky. Lebo len to je aká taká záruka, že tam nebudú chyby, nie typový systém. A ešte zvlášť sú pri staticky typovaných programátori upozorňovaní, aby testy láskavo nevynechávali, lebo statický systém dáva len pocit falošnej bezpečnosti, až TDD metodika má reálnym vplyv na hustotu výskytu chýb, niekde medzi 25 až 80 percent. Ak toto nevieš, si lopata bez skúseností na reálnom projekte v týme. Čo  si u mňa tak či tak, pokojne si ľahni a spí ďalej, s takýmito názormi tak skoro nebudeš vstávať do práce ;)
Tak nevím. Zkoušel jsi stejný projekt implementovat v nějakým jazyce s pořádným typovým systémem, abys měl srovnání? BTW, nevíš náhodou, proč se dneska tak tlačí TypeScript a Flow?

Netlačí. Používam Vue bez TS. Ale spustím si statickú analýzu cez Flow, avšak bez typov. Píšem na f-e všetko ako komponenty. Tak malé, čiže prehľadné, že mi drvivou väčšinou Flow aj tak nič nenájde. A na b-e ako moduly a mikroservisy. Zasa tak malé, že ani tam. Špagety kód v ktorom sa po týždni nevyzná ani autor sám, hoc používal statické typy, je dnes tak out, ako sú začiatočníkmi preceňované statické typy.

Re:Problémy s JavaScript v praxi
« Odpověď #268 kdy: 04. 10. 2018, 14:50:28 »
Věci jako dynamické typy ti dávají větší volnost a dají se díky nim psát stručnější, přehlednější programy.
To je nebetyčná hovadina, viz HMTS.
Čo je HTMS?
Googluj, šmudlo.

Šmudlu máš v trenkách. Nehraj chytrého a napíš čo si tým myslel.

asd

Re:Problémy s JavaScript v praxi
« Odpověď #269 kdy: 04. 10. 2018, 14:51:24 »
Citace
Zkoušel jsi někdy jazyk z pořádným typovým systémem? (haskell, scala, ocaml) Protože pokud jo, tak bych prosil nějaké zdůvodnění, protože tohle IMO naprosto není pravda.

Dřív jsem dělal v Pascalu, C#, Javě. Takže čistě osobní zkušenost. A teď se zeptám já - zkoušel sis v JS napsat nějaký pořádný program(podle idiomů platných pro JS, ne pro Javu)? nebo soudíš podle několika třířádkových skriptů, co sis sesmolil v konzoli, abys měl argumenty pro flame na rootu?