Problémy s JavaScript v praxi

Re:Problémy s JavaScript v praxi
« Odpověď #270 kdy: 04. 10. 2018, 14:58:01 »
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?

Tomu ver, že je to tak, ako píšeš. A použil ES3. O modernom JS miestny hejteri nemajú ani šajn, tam je jadro problému.


eee

Re:Problémy s JavaScript v praxi
« Odpověď #271 kdy: 04. 10. 2018, 14:59:09 »
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.

andy

Re:Problémy s JavaScript v praxi
« Odpověď #272 kdy: 04. 10. 2018, 15:05:28 »
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?
Takže nezkoušel.

Re:Problémy s JavaScript v praxi
« Odpověď #273 kdy: 04. 10. 2018, 15:06:14 »
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ý?

eee

Re:Problémy s JavaScript v praxi
« Odpověď #274 kdy: 04. 10. 2018, 15:07:31 »
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).
Já mám pořád pocit, že jsem se špatně vyspal a nepoznám vtip... fakt to myslíte vážně?
Kód: [Vybrat]
function f(a,b) {
  return a + b;
}
Bude to concatovat, nebo sčítat, nebo přetypovávat a konkatovat?

A takhle normálně programuješ v dynamicky typovaných jazycích? Já mám zato, že je fajn si hlídat, co kam předávám. 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á.
Až budeš mít za sebou zkušenost člověka, který 20 let udržuje stále se měnící kód, na kterém pracuje skupina programátorů, budeš se smát tomu, jak jsi byl naivní.


Re:Problémy s JavaScript v praxi
« Odpověď #275 kdy: 04. 10. 2018, 15:08:20 »
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?
Takže nezkoušel.

Písal predsa, že robil v Jave. Podľa teba teda nemá Java poriadny typový systém? Zato Haskell áno? Sranduješ...

andy

Re:Problémy s JavaScript v praxi
« Odpověď #276 kdy: 04. 10. 2018, 15:09:47 »
Písal predsa, že robil v Jave. Podľa teba teda nemá Java poriadny typový systém? Zato Haskell áno? Sranduješ...
Nemá. A myslím to vážně.

asd

Re:Problémy s JavaScript v praxi
« Odpověď #277 kdy: 04. 10. 2018, 15:15:31 »
Citace
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.
Citace

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.

asd

Re:Problémy s JavaScript v praxi
« Odpověď #278 kdy: 04. 10. 2018, 15:16:40 »
Citace
Takže nezkoušel.

Tak to jsme na tom v podstatě stejně, že.

andy

Re:Problémy s JavaScript v praxi
« Odpověď #279 kdy: 04. 10. 2018, 15:21:15 »
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.

Re:Problémy s JavaScript v praxi
« Odpověď #280 kdy: 04. 10. 2018, 15:22:13 »
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).
Já mám pořád pocit, že jsem se špatně vyspal a nepoznám vtip... fakt to myslíte vážně?
Kód: [Vybrat]
function f(a,b) {
  return a + b;
}
Bude to concatovat, nebo sčítat, nebo přetypovávat a konkatovat?

A takhle normálně programuješ v dynamicky typovaných jazycích? Já mám zato, že je fajn si hlídat, co kam předávám. 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á.
Až budeš mít za sebou zkušenost člověka, který 20 let udržuje stále se měnící kód, na kterém pracuje skupina programátorů, budeš se smát tomu, jak jsi byl naivní.

Takže teď si budeme honit ego, kdo má víc zkušeností? Hlavně že víš, kolik jich mám já... Trošku nevalidní argument. :)

Re:Problémy s JavaScript v praxi
« Odpověď #281 kdy: 04. 10. 2018, 15:23:27 »
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

Re:Problémy s JavaScript v praxi
« Odpověď #282 kdy: 04. 10. 2018, 15:26:24 »
Proto to JS dela blbe, pokud chces mit spolehlivy program, musis neustale rucne kontrolovat typy.

A co se tyce cecka, nemej peci, to byl muj prvnin jazyk, na kterem jsem vyrostl.

Nepřijde ti na tvých "myšlenkových" pochodech nic divné?

v

Re:Problémy s JavaScript v praxi
« Odpověď #283 kdy: 04. 10. 2018, 15:27:28 »
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.
něco jako tohle https://blog.rinatussenov.com/is-javascript-type-coercion-a-good-thing-83f4e1a17fb2 ?

andy

Re:Problémy s JavaScript v praxi
« Odpověď #284 kdy: 04. 10. 2018, 15:30:08 »
Až budeš mít za sebou zkušenost člověka, který 20 let udržuje stále se měnící kód, na kterém pracuje skupina programátorů, budeš se smát tomu, jak jsi byl naivní.

Takže teď si budeme honit ego, kdo má víc zkušeností? Hlavně že víš, kolik jich mám já... Trošku nevalidní argument. :)
No, moje zkušenost je, že v dynamických jazycích dělat velký refaktoring je třeba věc, kdy se pomalu vyplatí napsat celou tu věc od základu znovu. V jazycích typu Java to "nějak" s větším vypětím jde, v jazycích ve stylu haskell se refaktoring (a to dost masivní) dělá poměrně běžně. Osobní zkušenost. Dává to celkem smysl.