Problémy s JavaScript v praxi

Scripter

Re:Problémy s JavaScript v praxi
« Odpověď #285 kdy: 04. 10. 2018, 15:30:20 »
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?
Jistě, v interpretovaných jazycích se tak nějak věci za běhu kontrolují... :D
Interpretovanost nijak nesouvisí s typováním.


Re:Problémy s JavaScript v praxi
« Odpověď #286 kdy: 04. 10. 2018, 15:35:19 »
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?
Jistě, v interpretovaných jazycích se tak nějak věci za běhu kontrolují... :D
Interpretovanost nijak nesouvisí s typováním.

Ano, dobrý point - chtěl jsem napsat dynamických (~dynamicky typovaných). Moje chyba. :)

Scripter

Re:Problémy s JavaScript v praxi
« Odpověď #287 kdy: 04. 10. 2018, 15:38:19 »
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?
Jistě, v interpretovaných jazycích se tak nějak věci za běhu kontrolují... :D
Interpretovanost nijak nesouvisí s typováním.
Ano, dobrý point - chtěl jsem napsat dynamických (~dynamicky typovaných). Moje chyba. :)
Pak to ale není argument. 1. “Java umí kontrolovat typy na vstupu při překladu - před během.” 2. “V JS taky jdou kontrolovat typy na vstupu.”

Scripter

Re:Problémy s JavaScript v praxi
« Odpověď #288 kdy: 04. 10. 2018, 15:40:13 »
Vy jste hrozne nechapavi. Jako programator vis co mas v kodu, ale netusis a nemuzes tusit, kdo tu funkci pouzije a co ti do ni nacpe.
To je sice nepochopení, ale z tvojí strany. Pokud má funkce přijímat zásadně jen jeden typ, tak si to máš ověřit na vstupu.
Vygoogli si “historie teorie typů”, ať víš, co ti uniká.

eee

Re:Problémy s JavaScript v praxi
« Odpověď #289 kdy: 04. 10. 2018, 15:52:53 »
Citace
Ne, že bych s tím obecně nesouhlasil. Ale co se má stát když:
Kód: [Vybrat]
1 + "1"? Taky výjimka?
ano, zde vyjimka ScitaniJablekHrusekException

Jenze kdyz je jeden z operandu string tak + neni scitani ale concat. Ale to zabednencum nevysvetlis, budou pindat, ze to ma hazet exception :D

Ked su dane veci v promennych tak  ty ako programator netusis ci sa bude scitavat alebo concatovat, o to ide.

Ale tušíš. Jednak si můžeš zjistit, co uvnitř je, druhak je úplně jedno, jak typovaný máš jazyk, ale imho by měl programátor vědět, co má kde v programu. A ano, víš, jak se to + bude chovat, protože existuje něco jako specifikace, kterou tady někteří pohrdají (chtěl bych třeba eee vidět v Céčku).
Vy jste hrozne nechapavi. Jako programator vis co mas v kodu, ale netusis a nemuzes tusit, kdo tu funkci pouzije a co ti do ni nacpe. A chybne pouziti by melo byt oznameno a nebo by alespín melo séadnouť na misto toho,mze udela nesmysl. Pokud ti jde o spolehlivost, musis programovat defenzivne. Temer nikdy nechces scitat string s intem, to je proste prasarna. Proto by to jazyk nemel povolit. Kdyz to nahodou mimoradne opravdu chces, pak si to jako programator osetris pretypovanim. Proto to JS dela blbe, pokud chces mit spolehlivy program, musis neustale rucne kontrolovat typy. To je opruz, takovy jazyk je akorat na hrani a je smutne, ze s jazykem na hrani musime delat frontendy i v byznys a prumyslovem prostredi pro vazne veci. A co se tyce cecka, nemej peci, to byl muj prvnin jazyk, na kterem jsem vyrostl.

A chápeš aspoň trochu, že ti statické typy za behu programu nepomôžu ani ň? Že musíš ručne kontrolovať vstupy aj v statickom jazyku, inak aj z Javy urobíš jazyk na hranie, lebo bude padať po každej akcii? Alebo že spadne na runtime error to nevadí? Ty ho budeš aj tak považovať za dobre napísaný?
Nechápu proč mě konfrontuješ se statickými typy, o těch jsem nenapsal ani čárku. Dobře napsaný program na runtime vyjimku nespadne, protože výjimku bude mít rozumně a bezpečně ošetřenu hned na několika funkčních úrovních dle potřeby. Problém nastává v JS, který udělá kravinu a tu výjimku neudělá ani na zjevné blbosti, takže chyba se neovladatelně šíří dál systémem.


eee

Re:Problémy s JavaScript v praxi
« Odpověď #290 kdy: 04. 10. 2018, 15:55:43 »
Citace
Takže nezkoušel.
Tak to jsme na tom v podstatě stejně, že.
Napsal jsem toho fakt hodně v pythonu. Což je dynamický jazyk, který se v těchhle podstatných věcech od JS neliší. Takže bych řekl, že na rozdíl od tebe v tomhle zkušenost mám.
Buď kecáš a Python neznáš, nebo nevíš jak je JS špatně navržený. Každopádně tvrzení, že se Python neliší od JS je hodně zcestný. :-)

hovnex

Re:Problémy s JavaScript v praxi
« Odpověď #291 kdy: 04. 10. 2018, 15:58:32 »
Pokud to nechcete číst celé, tak zde je pár závěrů, které jsem vyvodil z dosavadní diskuse:

- JavaScript je špatný, protože pokud v něm programuji jako (doplň název oblíbeného jazyka - např. Cobol, Fortran, Basic aj.) tak programy v něm nefungují správně.
- JavaScript je špatný, protože akceptuje konstrukce jako např. "1" + 1, 1 + {}, apod.
- JavaScript je špatný, protože neumí správně porovnat dvě hodnoty.
- JavaScript je špatný, protože jeho dokumentace popisuje chování, které nedává smysl.

Pro nové čtenáře jen doplním že:
- Vývojáři, kteří přispívají do tohoto vlákna mají minimálně 50 let komerční praxe.
- Vývojáři, kteří přispívají do tohoto vlákna mají mzdu, alespoň 250k/měsíc, popř. 12k/MD.
- Vývojáři, kteří přispívají do tohoto vlákna znají alespoň 20 programovacích jazyků (obvykle mezi ně nepatří JavaScript).

Scripter

Re:Problémy s JavaScript v praxi
« Odpověď #292 kdy: 04. 10. 2018, 16:02:56 »
Pokud to nechcete číst celé, tak zde je pár závěrů, které jsem vyvodil z dosavadní diskuse:

- JavaScript je špatný, protože pokud v něm programuji jako (doplň název oblíbeného jazyka - např. Cobol, Fortran, Basic aj.) tak programy v něm nefungují správně.
- JavaScript je špatný, protože akceptuje konstrukce jako např. "1" + 1, 1 + {}, apod.
- JavaScript je špatný, protože neumí správně porovnat dvě hodnoty.
- JavaScript je špatný, protože jeho dokumentace popisuje chování, které nedává smysl.

Pro nové čtenáře jen doplním že:
- Vývojáři, kteří přispívají do tohoto vlákna mají minimálně 50 let komerční praxe.
- Vývojáři, kteří přispívají do tohoto vlákna mají mzdu, alespoň 250k/měsíc, popř. 12k/MD.
- Vývojáři, kteří přispívají do tohoto vlákna znají alespoň 20 programovacích jazyků (obvykle mezi ně nepatří JavaScript).
+ obhajovatelé JS nemají ani ponětí o teorii typů.

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #293 kdy: 04. 10. 2018, 16:04:43 »
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?

Jistě, v interpretovaných jazycích se tak nějak věci za běhu kontrolují... :D

No, mě na tom Javascriptu (a Pythonu do 3.4) vadí jiná věc.
Přeci jen je rozdíl mezi tím, když:
1. kontroluješ před spuštěním
2. kontroluješ za běhu
3. nekontroluješ vůbec, respektive ručně = všichni na to kašlou

Důsledek stavu, že v "v interpretovaných jazycích se tak nějak věci za běhu kontrolují" je ten, že se nekontrolují. Ani za běhu.
Proto se rozšiřují věci jako typescript, nebo flow. Protože i v JS komunitě dozrávají k přesvědčení, že je to tedy asi potřeba, některé věci kontrolovat.

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #294 kdy: 04. 10. 2018, 16:11:46 »
Jednak si můžeš zjistit, co uvnitř je, ...

Tohle by slušný programátor nemohl ani vyslovit!

Scripter

Re:Problémy s JavaScript v praxi
« Odpověď #295 kdy: 04. 10. 2018, 16:13:12 »
Jednak si můžeš zjistit, co uvnitř je, ...

Tohle slušný programátor nemůže ani vyslovit!
Ale cikáda tedy může.

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #296 kdy: 04. 10. 2018, 16:14:52 »
Citace
Z některých příspěvků tady mám celkem strach... to jako staticky typovaný systém někteří používají proto, aby mohli psát jako prasata?

Spoustě programátorů jednoduše nedochází(kromě jiného), že v dynamicky typovaných jazycích je ta kontrola z velké části na nich.

Což v praxi znamená...

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #297 kdy: 04. 10. 2018, 16:19:41 »
Pokrocily programovaci jazyk je od toho, aby co nejvice moznych lidskych chyb odstinil a nedovolil.

Naprosto souhlasím. Jenže život není tak přímočarý. Javascript vymejšleli v době, kdy byly rádi, že nemusí řešit paměť. A s ohledem na to, že netušili co za styly se v budoucnu budou prefereovat je to jazyk velmi nadčasový a flexibilní. Někdy i debilní.

Kit

Re:Problémy s JavaScript v praxi
« Odpověď #298 kdy: 04. 10. 2018, 16:24:54 »
No, mě na tom Javascriptu (a Pythonu do 3.4) vadí jiná věc.
Přeci jen je rozdíl mezi tím, když:
1. kontroluješ před spuštěním
2. kontroluješ za běhu
3. nekontroluješ vůbec, respektive ručně = všichni na to kašlou

Rozdíl mezi statickým a dynamickým typováním je v tom, že u staticky typovaných jazyků musíš data prověřit před vstupem do bloku, ale u dynamicky typovaných tu můžeš udělat v dekorátoru nebo až uvnitř bloku. Kontrolu před spuštěním můžeš udělat u všech.

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #299 kdy: 04. 10. 2018, 16:48:13 »
No, mě na tom Javascriptu (a Pythonu do 3.4) vadí jiná věc.
Přeci jen je rozdíl mezi tím, když:
1. kontroluješ před spuštěním
2. kontroluješ za běhu
3. nekontroluješ vůbec, respektive ručně = všichni na to kašlou

Rozdíl mezi statickým a dynamickým typováním je v tom, že u staticky typovaných jazyků musíš data prověřit před vstupem do bloku, ale u dynamicky typovaných tu můžeš udělat v dekorátoru nebo až uvnitř bloku. Kontrolu před spuštěním můžeš udělat u všech.

Tak. Když už to chápe i Kit, tak v čem je tedy problém?