Problémy s JavaScript v praxi

andy

Re:Problémy s JavaScript v praxi
« Odpověď #240 kdy: 04. 10. 2018, 12:10:42 »
A smím se teda zeptat, proč JS ochotně slítne na sebemenší syntax error?

Ja myslel, ze se tady bavim s programatory, kteri rozlisuji co je syntax a runtime error.
No a ti programátoři vědí, že syntax error je často recoverable, tak v čem je problém?


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

Jinak je fajn si funkce pojmenovávat tak, aby bylo +/- jasné, co dělá. ;)

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í.

Re:Problémy s JavaScript v praxi
« Odpověď #242 kdy: 04. 10. 2018, 13:39:07 »
Ja sa strácam. Pep, v akom jazyku programuješ, že je tak dobrý, že ti nedovolí napísať chybný kód???

andy

Re:Problémy s JavaScript v praxi
« Odpověď #243 kdy: 04. 10. 2018, 13:40:17 »
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á.

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....

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

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....

Takže vďaka tomu ty píšeš len dokonalý kód. Programy ktoré produkuje školy bežia dokonale, bez jedinej chyby. Tak?


andy

Re:Problémy s JavaScript v praxi
« Odpověď #245 kdy: 04. 10. 2018, 13:45:17 »
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í.

Re:Problémy s JavaScript v praxi
« Odpověď #246 kdy: 04. 10. 2018, 13:46:03 »
Produkuješ tam malo byť. To len môj tel. má svojský zmysel pre humor.

Re:Problémy s JavaScript v praxi
« Odpověď #247 kdy: 04. 10. 2018, 13:48:02 »
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?

Pep

Re:Problémy s JavaScript v praxi
« Odpověď #248 kdy: 04. 10. 2018, 13:48:51 »
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.
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
Ano, a díky CHI si i můžu říct nejen typ, ale i další dodatečné podmínky (tzv. kontrakty), např. že int má být nenulový.

Re:Problémy s JavaScript v praxi
« Odpověď #249 kdy: 04. 10. 2018, 13:50:26 »
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.
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
Ano, a díky CHI si i můžu říct nejen typ, ale i další dodatečné podmínky (tzv. kontrakty), např. že int má být nenulový.

A si si vedomý, že to môžem aj v JS?

andy

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

Pep

Re:Problémy s JavaScript v praxi
« Odpověď #251 kdy: 04. 10. 2018, 13:53:43 »
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.
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
Ano, a díky CHI si i můžu říct nejen typ, ale i další dodatečné podmínky (tzv. kontrakty), např. že int má být nenulový.
A si si vedomý, že to môžem aj v JS?
Nemůžeš, ani staticky typovaná Java ti to v typovém systému neumožní.

Re:Problémy s JavaScript v praxi
« Odpověď #252 kdy: 04. 10. 2018, 14:03:17 »
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, 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 ;)

Re:Problémy s JavaScript v praxi
« Odpověď #253 kdy: 04. 10. 2018, 14:08:59 »
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.
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
Ano, a díky CHI si i můžu říct nejen typ, ale i další dodatečné podmínky (tzv. kontrakty), např. že int má být nenulový.
A si si vedomý, že to môžem aj v JS?
Nemůžeš, ani staticky typovaná Java ti to v typovém systému neumožní.

A ako Ti pomáha Java s nesprávnym vstupom za behu programu? Nechávaš svoje programy proste zahučať na runtime error? Nezájem? Veď ty si to napísal správne?

Pep

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