Problémy s JavaScript v praxi

eee

Re:Problémy s JavaScript v praxi
« Odpověď #450 kdy: 09. 10. 2018, 17:56:44 »
Ani ja uprimne nechapu tu ohromnou vyhodu, kterou ma prinest moznost postupne do te same promenne prirazovat uplne odlisne typy. A nemusi jit ani o ten extremni pripad od eee - (staticke) funkcionalni jazyky resi nulovatelnost pomoci Option/Maybe a dve ruzne moznosti pomoci Either/Result. "Vyhoda" dynamickych jazyku v teto konkretni veci je v tom, ze autori jazyku i programu v nich nemusi moc premyslet a ono jim to tak nejak (vetsinou) vyjde. Vyjimecne se to hodit muze, ale obecne je to spis z nouze ctnost.
A asi to ani nikdy nepochopíš, musel bys úplně změnit pohled na programování, zapomenout na své osvědčené postupy jak algoritmizuješ úlohy, které používáš automaticky a už o nich ani nepřemýšlíš.

V dynamickém jazyku nejsou proměnné důležité,  pracuješ v něm s hodnotami, nikoliv proměnnými. A možná to více oceníš, když si uvědomíš, že nejde jen o pojmenované proměnné, ale i ty anonymní, listy, slovníký, generátory, návratové hodnoty funkcí. To vše pracuje primárně s variabilními hodnotami. Je to něco jako nákupní taška, kam si dáš libovolné zboží jaké zrovna potřebuješ. Pro statického programátora hrůzná představa, ten za normální považuje, že má tašku na rohlíky, tašku na mlíka, tašku ha piva a přijde mu, že je velmi prasácké mít všechno v jedné tašce a nemá z toho dobrý pocit. Ale je to dáno jen tím, jak je vychovaný a jak je naučený myslet.


BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #451 kdy: 09. 10. 2018, 18:27:23 »
Ani ja uprimne nechapu tu ohromnou vyhodu, kterou ma prinest moznost postupne do te same promenne prirazovat uplne odlisne typy. A nemusi jit ani o ten extremni pripad od eee - (staticke) funkcionalni jazyky resi nulovatelnost pomoci Option/Maybe a dve ruzne moznosti pomoci Either/Result. "Vyhoda" dynamickych jazyku v teto konkretni veci je v tom, ze autori jazyku i programu v nich nemusi moc premyslet a ono jim to tak nejak (vetsinou) vyjde. Vyjimecne se to hodit muze, ale obecne je to spis z nouze ctnost.
A asi to ani nikdy nepochopíš, musel bys úplně změnit pohled na programování, zapomenout na své osvědčené postupy jak algoritmizuješ úlohy, které používáš automaticky a už o nich ani nepřemýšlíš.

V dynamickém jazyku nejsou proměnné důležité,  pracuješ v něm s hodnotami, nikoliv proměnnými. A možná to více oceníš, když si uvědomíš, že nejde jen o pojmenované proměnné, ale i ty anonymní, listy, slovníký, generátory, návratové hodnoty funkcí. To vše pracuje primárně s variabilními hodnotami. Je to něco jako nákupní taška, kam si dáš libovolné zboží jaké zrovna potřebuješ. Pro statického programátora hrůzná představa, ten za normální považuje, že má tašku na rohlíky, tašku na mlíka, tašku ha piva a přijde mu, že je velmi prasácké mít všechno v jedné tašce a nemá z toho dobrý pocit. Ale je to dáno jen tím, jak je vychovaný a jak je naučený myslet.

Tohle mne poněkud dráždí. Kde se vzala ta zažraná představa, že ve staticky typovaném jazyce pracuji s proměnnými? V Haskellu samozřejmě pracuji primárně s hodnotami. Proměnné jsou tam jen v případě nutnosti, kdy potřebuješ něco někam přehodit.

Chci slyšet tu skutečnou výhodu, v čem je dynamický jazyk výhodnější. Tohle je nesmysl.

v

Re:Problémy s JavaScript v praxi
« Odpověď #452 kdy: 09. 10. 2018, 18:35:40 »
Pro statického programátora hrůzná představa, ten za normální považuje, že má tašku na rohlíky, tašku na mlíka, tašku ha piva a přijde mu, že je velmi prasácké mít všechno v jedné tašce a nemá z toho dobrý pocit. Ale je to dáno jen tím, jak je vychovaný a jak je naučený myslet.
a ten statický programátor používá jaký jazyk? nebo jazyky

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #453 kdy: 09. 10. 2018, 18:37:47 »
To je prasárna jen z pohledu statického progamátora, který má zafixováno paradigma, že proměnná je svázaná s datovým typem a už neumí myslet jinak. Statický programátor nechápe flexibilitu dynamického jazyka a neumí ji využít ani když ji má k dispozici, je omezen ne jazykem, ale vlastním myšlením. Proto ty tragické dopady, když si pak sednou k něčemu jako Python, ale stejně se v něm snaží programovat staticky. Statický programátot proto nevnímá ímšzení statických jazyků a flexibilitu těch dynamických. Naopak to neplatí, statické jazyky dynamického programátora omezují, nutí ho implementivat těžkopádná řešení. V dynamickém jazyku je proměná jen něco jako ukazatel na datový objekt, který si informaci o svém typu nese stále s sebou. Výhodou statických jazyků jsou možnosti optimalizace a výkonu. Co se týče any, bavíme se stále o statickém C nebo už něčem jiném, případně o čem?
Jako člověk, který se profesně živí dynamickými jazyky (Javascript, Python, PHP, Lua) bych měl zájem o vysvětlení, v čem jsou ty dynamické jazyky výhodnější. Víše uvedený popis je spíš takový esoterický kec, než vysvětlení.

Re:Problémy s JavaScript v praxi
« Odpověď #454 kdy: 09. 10. 2018, 19:35:09 »
To je prasárna jen z pohledu statického progamátora, který má zafixováno paradigma, že proměnná je svázaná s datovým typem a už neumí myslet jinak. Statický programátor nechápe flexibilitu dynamického jazyka a neumí ji využít ani když ji má k dispozici, je omezen ne jazykem, ale vlastním myšlením. Proto ty tragické dopady, když si pak sednou k něčemu jako Python, ale stejně se v něm snaží programovat staticky. Statický programátot proto nevnímá ímšzení statických jazyků a flexibilitu těch dynamických. Naopak to neplatí, statické jazyky dynamického programátora omezují, nutí ho implementivat těžkopádná řešení. V dynamickém jazyku je proměná jen něco jako ukazatel na datový objekt, který si informaci o svém typu nese stále s sebou. Výhodou statických jazyků jsou možnosti optimalizace a výkonu. Co se týče any, bavíme se stále o statickém C nebo už něčem jiném, případně o čem?
Jako člověk, který se profesně živí dynamickými jazyky (Javascript, Python, PHP, Lua) bych měl zájem o vysvětlení, v čem jsou ty dynamické jazyky výhodnější. Víše uvedený popis je spíš takový esoterický kec, než vysvětlení.

Me prijde, ze v dynamickych jazycich je levnejsi polymorfismus.


Pep

Re:Problémy s JavaScript v praxi
« Odpověď #455 kdy: 09. 10. 2018, 19:39:22 »
Type inference je automatická detekce typů a ohledně C jsem našel jen tohle. Takže naopak já bych doporučil vám si zjistit co to je a následně vysvětlit, jak tím u statických jazyků chcete dosáhnout flexibility dynamických typů. To mi jasné není a opakuji, rád se nechám poučit.
V C to není. Jedná se o jazyky, které implementují nějakou variantu třeba tohodle https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_system. V podstatě pokud ty typy nejsou moc složitý a polymorfní, tak to toho odvodí docela hodně (nebo i úplně všechno). V praxi se dělá anotace top-level funkcí, což způsobí, že ty chybové hlášky pak nevylítnou někde, kde by to člověk nejmíň čekal a zároveň to většinou stačí, aby kompiler odvodil všechno ostatní.
Tohle chápu, ale tím si jen ušetříš práci s ručním popisem typů a což má dle mně několik dopadů:
a) asi to ušetří trochu práce s psaním kódu
b) asi to sníží počet chybných otypování proměnných (záleží jak moc to funguje a jak dobře je ošetřeno selhání automařiky)

S tím pomáhají i ta céčková makra.

Ale nijak nevidím, jak by to mělo pomoci s omezeními, které sebou nese statický typový systém, jejichž absence dynamickým jazykům zajišťuje jejich vyšší flexibilitu. Pokud někdo jako jediný nebo hlavní rozdíl mezi statickým a dynamickým jazykem vidí nutnost psaní typů, tak dynamickým jazykům nerozumí a neumí je efektivně používat. Popisování typů je marginálie. A pokud někdo chápe rozdíl mezi dynamickým a statickým programováním, nechť mi prosím vysvětlí, jaký přínos v tomto nese type inference. Imho žádný, pokud neumožní věci jako:'

a = 1
a = 1.1
a = 999999999999999999999999999999999999L
a = 'text'

Dynamické typování není flexibilnější, jen umožňuje chyby a prasárny jako kód výše. A když už někdo chce mermomocí prasit, může použít any/dynamic.
To je prasárna jen z pohledu statického progamátora, který má zafixováno paradigma, že proměnná je svázaná s datovým typem a už neumí myslet jinak. Statický programátor nechápe flexibilitu dynamického jazyka a neumí ji využít ani když ji má k dispozici, je omezen ne jazykem, ale vlastním myšlením. Proto ty tragické dopady, když si pak sednou k něčemu jako Python, ale stejně se v něm snaží programovat staticky. Statický programátot proto nevnímá ímšzení statických jazyků a flexibilitu těch dynamických. Naopak to neplatí, statické jazyky dynamického programátora omezují, nutí ho implementivat těžkopádná řešení. V dynamickém jazyku je proměná jen něco jako ukazatel na datový objekt, který si informaci o svém typu nese stále s sebou. Výhodou statických jazyků jsou možnosti optimalizace a výkonu. Co se týče any, bavíme se stále o statickém C nebo už něčem jiném, případně o čem?
Ona už je prasárna pojmenovat proměnnou a, neřkuli rvát do ní hodnoty různých typů.

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #456 kdy: 09. 10. 2018, 19:44:56 »
Jako člověk, který se profesně živí dynamickými jazyky (Javascript, Python, PHP, Lua) bych měl zájem o vysvětlení, v čem jsou ty dynamické jazyky výhodnější. Víše uvedený popis je spíš takový esoterický kec, než vysvětlení.

Me prijde, ze v dynamickych jazycich je levnejsi polymorfismus.

OK. Můžeš to prosím rozvést?

Jediný případ, kdy jsem se setkal, že ta dynamičnost byla k něčemu, byl Erlang. Protože tam se opravdu dalo real-time opravovat chyby. Prostě se ten aktor kousl, a čekal, dokavad jsi to neopravil. Ostatní vesele běhali, maximálně se teda ta chyba rozjela. V Pythonu, ani v Javascriptu tohlencto nejde.

eee

Re:Problémy s JavaScript v praxi
« Odpověď #457 kdy: 09. 10. 2018, 20:06:02 »
To je prasárna jen z pohledu statického progamátora, který má zafixováno paradigma, že proměnná je svázaná s datovým typem a už neumí myslet jinak. Statický programátor nechápe flexibilitu dynamického jazyka a neumí ji využít ani když ji má k dispozici, je omezen ne jazykem, ale vlastním myšlením. Proto ty tragické dopady, když si pak sednou k něčemu jako Python, ale stejně se v něm snaží programovat staticky. Statický programátot proto nevnímá ímšzení statických jazyků a flexibilitu těch dynamických. Naopak to neplatí, statické jazyky dynamického programátora omezují, nutí ho implementivat těžkopádná řešení. V dynamickém jazyku je proměná jen něco jako ukazatel na datový objekt, který si informaci o svém typu nese stále s sebou. Výhodou statických jazyků jsou možnosti optimalizace a výkonu. Co se týče any, bavíme se stále o statickém C nebo už něčem jiném, případně o čem?
Jako člověk, který se profesně živí dynamickými jazyky (Javascript, Python, PHP, Lua) bych měl zájem o vysvětlení, v čem jsou ty dynamické jazyky výhodnější. Víše uvedený popis je spíš takový esoterický kec, než vysvětlení.
Není to ezoterické, ale abstraktní. Změnit lidem myšlení, přimět je dívat se na věci úplně jiným pohledem je těžké, protože to není věc racionální znalosti informací, ale spíše procesu nebo způsobu uvažování a přirozenost člověka je taková, te se tomu z jistých důvodů podvědomě brání a to platí obecně, nejen v programování.

Dynamické jazyky jsou výhodnější ve své flexibilitě, ve své přirozenější a jednodušší schopnosti vyjadřování, které je bližší přirozenému lidskému uvažování. Nemají to zadarmo, je to vzdálenější strojovému zpracování dat a platí se za to výkonem. Nemusí to vyhovovat lidem s různými poruchami myšlení, kteří mezi běžnou moc nezapadají a kterým může být strojové myšlení bližší. Mezi programátory je takových asociálů asi zvýšené množství, alespoň mají takovou pověst a má to logické zdůvodnění. U nich ten odpor k dynamickým jazykům a adorace těch statických pochopitelná. Pro ně jsou statické jazyky lepší, ale chybí jim nadhled, který by jim pomohl rozpoznat, že se jedná o osobní preference, které nemohou zobecňovat.

Bacsa

Re:Problémy s JavaScript v praxi
« Odpověď #458 kdy: 09. 10. 2018, 20:09:39 »
To je prasárna jen z pohledu statického progamátora, který má zafixováno paradigma, že proměnná je svázaná s datovým typem a už neumí myslet jinak. Statický programátor nechápe flexibilitu dynamického jazyka a neumí ji využít ani když ji má k dispozici, je omezen ne jazykem, ale vlastním myšlením. Proto ty tragické dopady, když si pak sednou k něčemu jako Python, ale stejně se v něm snaží programovat staticky. Statický programátot proto nevnímá ímšzení statických jazyků a flexibilitu těch dynamických. Naopak to neplatí, statické jazyky dynamického programátora omezují, nutí ho implementivat těžkopádná řešení. V dynamickém jazyku je proměná jen něco jako ukazatel na datový objekt, který si informaci o svém typu nese stále s sebou. Výhodou statických jazyků jsou možnosti optimalizace a výkonu. Co se týče any, bavíme se stále o statickém C nebo už něčem jiném, případně o čem?
Jako člověk, který se profesně živí dynamickými jazyky (Javascript, Python, PHP, Lua) bych měl zájem o vysvětlení, v čem jsou ty dynamické jazyky výhodnější. Víše uvedený popis je spíš takový esoterický kec, než vysvětlení.
Me prijde, ze v dynamickych jazycich je levnejsi polymorfismus.
To je nesmysl, v čem by to mělo být levnější? A jaký polymorfismus, statický ani parametrický to nemá, leda ad hoc, kde to vyjde nastejno.

eee

Re:Problémy s JavaScript v praxi
« Odpověď #459 kdy: 09. 10. 2018, 20:14:01 »
Ona už je prasárna pojmenovat proměnnou a, neřkuli rvát do ní hodnoty různých typů.
To přece záleží na okolnostech, v krátké ukázce takové pojmenování ničemu nevadí. Nebuď rigidní a používej pravidla s pochopením jejich účelu. V dynamických jazycích se s hodnotami různých typů zachází volně a není to prasárna. Kdo tohle nedokáže pochopit, ten ani nedokáže pochopit, že typová inference vlastně nic podstatného neřeší. Abychom se vrátili ke kořenům této debaty.

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #460 kdy: 09. 10. 2018, 20:15:39 »
To je prasárna jen z pohledu statického progamátora, který má zafixováno paradigma, že proměnná je svázaná s datovým typem a už neumí myslet jinak. Statický programátor nechápe flexibilitu dynamického jazyka a neumí ji využít ani když ji má k dispozici, je omezen ne jazykem, ale vlastním myšlením. Proto ty tragické dopady, když si pak sednou k něčemu jako Python, ale stejně se v něm snaží programovat staticky. Statický programátot proto nevnímá ímšzení statických jazyků a flexibilitu těch dynamických. Naopak to neplatí, statické jazyky dynamického programátora omezují, nutí ho implementivat těžkopádná řešení. V dynamickém jazyku je proměná jen něco jako ukazatel na datový objekt, který si informaci o svém typu nese stále s sebou. Výhodou statických jazyků jsou možnosti optimalizace a výkonu. Co se týče any, bavíme se stále o statickém C nebo už něčem jiném, případně o čem?
Jako člověk, který se profesně živí dynamickými jazyky (Javascript, Python, PHP, Lua) bych měl zájem o vysvětlení, v čem jsou ty dynamické jazyky výhodnější. Víše uvedený popis je spíš takový esoterický kec, než vysvětlení.
Není to ezoterické, ale abstraktní. Změnit lidem myšlení, přimět je dívat se na věci úplně jiným pohledem je těžké, protože to není věc racionální znalosti informací, ale spíše procesu nebo způsobu uvažování a přirozenost člověka je taková, te se tomu z jistých důvodů podvědomě brání a to platí obecně, nejen v programování.

Dynamické jazyky jsou výhodnější ve své flexibilitě, ve své přirozenější a jednodušší schopnosti vyjadřování, které je bližší přirozenému lidskému uvažování. Nemají to zadarmo, je to vzdálenější strojovému zpracování dat a platí se za to výkonem. Nemusí to vyhovovat lidem s různými poruchami myšlení, kteří mezi běžnou moc nezapadají a kterým může být strojové myšlení bližší. Mezi programátory je takových asociálů asi zvýšené množství, alespoň mají takovou pověst a má to logické zdůvodnění. U nich ten odpor k dynamickým jazykům a adorace těch statických pochopitelná. Pro ně jsou statické jazyky lepší, ale chybí jim nadhled, který by jim pomohl rozpoznat, že se jedná o osobní preference, které nemohou zobecňovat.

Jak říkám, esoterika.

Mám rád jazyk Thue (https://cs.wikipedia.org/wiki/Ezoterický_programovac%C3%AD_jazyk#Thue). Je výhodnější ve své flexibilitě, ve své přirozenější a jednodušší schopnosti vyjadřování, které je bližší přirozenému lidskému uvažování. Nemá to zadarmo, je to vzdálenější strojovému zpracování dat a platí se za to výkonem. Nemusí to vyhovovat lidem s různými poruchami myšlení, kteří mezi běžnou moc nezapadají a kterým může být strojové myšlení bližší. Mezi programátory je takových asociálů asi zvýšené množství, alespoň mají takovou pověst a má to logické zdůvodnění. U nich ten odpor k dynamickým jazykům a adorace těch statických pochopitelná. Pro ně jsou statické jazyky lepší, ale chybí jim nadhled, který by jim pomohl rozpoznat, že se jedná o osobní preference, které nemohou zobecňovat.

eee

Re:Problémy s JavaScript v praxi
« Odpověď #461 kdy: 09. 10. 2018, 20:26:27 »
Jak říkám, esoterika.
Lidská mysl si vyvinula řadu strategií, kterými se brání změně myšlení. Neočekávám v této diskusi, že by tu někdo k něčemu takovému dospěl :-).

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #462 kdy: 09. 10. 2018, 20:32:17 »
Jak říkám, esoterika.
Lidská mysl si vyvinula řadu strategií, kterými se brání změně myšlení. Neočekávám v této diskusi, že by tu někdo k něčemu takovému dospěl :-).

Tak to chápeš špatně.

Za prvé, máš pravdu, lidská mysl se přirozeně brání změně. Na to jsou studie. Ale otázka je, zda ten problém mám já, neby ty.

Za druhé, jak jsem psal, tak mě živí programování v dynamických jazycích. A tudíž bych samozřejmě uvítal, možná i zaplatil, když by mi někdo ukázal, v čem dělám chybu v úvaze. Protože, co si budem nalhávat, proč bych měl programovat s utrpením, když bych mohl programovat s potěšením.

v

Re:Problémy s JavaScript v praxi
« Odpověď #463 kdy: 09. 10. 2018, 20:38:56 »
proč bych měl programovat s utrpením, když bych mohl programovat s potěšením
no pain, no gain

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Problémy s JavaScript v praxi
« Odpověď #464 kdy: 09. 10. 2018, 20:49:34 »
proč bych měl programovat s utrpením, když bych mohl programovat s potěšením
no pain, no gain
Takže když se u programování budu mlátit kladivem do prstů, tak budu tvořit kvalitnější kód? OK.