Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - BoneFlute

Stran: 1 ... 71 72 [73] 74 75 ... 133
1081
Vývoj / Re:Problémy s JavaScript v praxi
« 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.

1082
Vývoj / Re:Problémy s JavaScript v praxi
« 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.

1083
Vývoj / Re:Problémy s JavaScript v praxi
« 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í.

1084
Vývoj / Re:Problémy s JavaScript v praxi
« 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.

1085
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 07. 10. 2018, 19:29:15 »
Jaký je teda rozdíl mezi JS+anotace+linter vs. staticky typovaný jazyk...? Pokud ten jazyk využívá ty typy pouze pro kontrolu korektnosti, tak mi to ve výsledku připadá jako naprosto identické?

Krom odpovědi, která je evidentní, a dalších zajímavostí...

JS+anotace+linter má jednu takovou drobnou výhodu v tom, že ty typy jsou volitelné.

Ono ve výsledku to opět není rozdíl, protože ve statickém jazyce můžeš všude rvát Any, ale v praxi vlastně jde hlavně o zvyk. Podporuje to styl vývoje, kdy nejdříve naprototypuješ cosi, aby to alespoň zhruba odpovídalo tomu, co chceš. A pak přidáš typy, aby se ti to zase celé nerozpadlo.

1086
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 06. 10. 2018, 18:45:17 »
Rád bych zmínil můj pohled na věc.

Nejsem si úplně jistý, co vlastně autor chce slyšet. Pokud je nutností se naučit všechny vlastnosti a výjimky toho jazyka, tak není žádný jazyk špatný. Ani asembler.

Skutečnost, že se tu občas někdo naváží do programátorů jako do lopat, to taky není tak úplně jednoznačný. Přeci jen je rozdíl když si musím namáhat hlavu, abych ošéfoval všechny vlastnosti a situace, a podrazy toho jazyka (javascript, C, python) a pak doufal, že jsem byl opravdu tak dobrej, a na nic nezapoměl...

... a nebo si musím namahat hlavu, abych přesvědčil kompilátor, že má udělat to co chci, a on na mě furt řve, že tohle nejde, a tohle nejde, a že to musím ještě takhle jinak - a tu všechnu buzeraci kůli tomu, aby kompilátor minimalizoval riziko špatného programu (typescript, rust, haskell).

Tohle jsem si uvědomil při mém studiu jazyka Rust. On to není žádný jednoduchý jazyk. Naučit se ho chce trošku mentální námahy. Ale ta námaha má smysl. Námaha vložená do programu v C mi přijde naprosto zbytečná, protože dělám to, co by měl dělat stroj.
Mentální námaha se vyplatí v jazyce jako Idris nebo Agda, které mi zaručí korektnost. U JS to je spíše opruz.
Šak to píšu.

A Idris či Agda je zbytečnej extrém. Stačí cokoliv, co aspoň trochu spolupracuje.

Ale obhajovat Javascript, že je super, když vlastně nijak nepomáhá a všechno si to vývojář musí ošéfovat sám?

1087
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 06. 10. 2018, 18:33:42 »
Rád bych zmínil můj pohled na věc.

Nejsem si úplně jistý, co vlastně autor chce slyšet. Pokud je nutností se naučit všechny vlastnosti a výjimky toho jazyka, tak není žádný jazyk špatný. Ani asembler.

Skutečnost, že se tu občas někdo naváží do programátorů jako do lopat, to taky není tak úplně jednoznačný. Přeci jen je rozdíl když si musím namáhat hlavu, abych ošéfoval všechny vlastnosti a situace, a podrazy toho jazyka (javascript, C, python) a pak doufal, že jsem byl opravdu tak dobrej, a na nic nezapoměl...

... a nebo si musím namahat hlavu, abych přesvědčil kompilátor, že má udělat to co chci, a on na mě furt řve, že tohle nejde, a tohle nejde, a že to musím ještě takhle jinak - a tu všechnu buzeraci kůli tomu, aby kompilátor minimalizoval riziko špatného programu (typescript, rust, haskell).

Tohle jsem si uvědomil při mém studiu jazyka Rust. On to není žádný jednoduchý jazyk. Naučit se ho chce trošku mentální námahy. Ale ta námaha má smysl. Námaha vložená do programu v C mi přijde naprosto zbytečná, protože dělám to, co by měl dělat stroj.

1088
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 05. 10. 2018, 17:48:14 »
To prostě neokecáš a mám v zásobě spoustu dalších špeků, třeba tento je také povedený.


null == 0
null === 0
null > 0
null >= 0


Kdo si tipne výsledeky?  :-)

Iste, že je to false. Veď porovnávaš referencie na dva rôzne objekty v pamäti. Čo iné by to akože malo dať?

A to je důvod proč mi přijde to rozlišování objektů a hodnot jako fakt ošklivé. (Jako kdyby null sám o sobě nebylo zvěrstvo.)

1089
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 05. 10. 2018, 16:14:04 »
Jediné řešení by byla standardizace dalšího jazyka (nějaké nové moderní verze JS bez zpětné kompatibility nebo úplně jiného jazyka) v browseru <script language="XYZ">. Ale to by museli chtít Google, Mozilla a Microsoft.
Na backend straně žádné omezení není, komu JS (a tedy node.js) nevyhovuje, má desítky dalších možností v čem psát.
Hodně se používají transpilery. Takže ani v browseru to omezení není.

Otázka zněla na problém s javascriptem v praxi. A zdá se, že vlastně skutečně žádné nemá. Protože komu nevyhovuje, ten používá něco jiného :-)

1090
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 05. 10. 2018, 01:29:07 »
Ale JS nic takového neříká.
Všichni kdo JS znají přece vědí, že když se při == porovnávání typy porovnávaných operandů neshodují, tak JS bude AUTOMATICKY přetypovávat jednu ze stran na typ té druhé a porovnávat HODNOTY až po přetypování.

Tak oni to tu někteří i vědí. Jen s tím nesouhlasí.


A primitivní typy mají samozřejmě přednost před objekty, protože porovnávat dva objekty je nesmysl (vrátí vždy false).
A proč by mělo být porovnávání dvou objektů nesmysl?

Kód: [Vybrat]
var a = {}
var b = {}
var c = a
a == b // false
a == c // true

1091
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 21:56:33 »
Teď nevím, co se tím pokoušíš říct...

1, "x" - jsou pouze hodnoty. Nemají identitu.
new Int(1), new String("x") - mají navíc identitu. Tudíž se v některých jazycích platí:
Kód: [Vybrat]
new Int(1) != new Int(1)
Což není hezké.

1092
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 21:22:10 »
Citace
new String('aa') == new String('aa')
{} == {}

Tady zase porovnáváš objekt s objektem. No a shodné objekty to nejsou. Tzn. je to konzistentní.

Tady někde je tuším ta hranice, kdy se přepíná mezi porovnávání hodnoty, a porovnávání identity. Což je další matení nepřítele, že si se dvěma oparátory (== a ===) vlastně furt nevystačíš.

Ne, to bych neřekl. Ono totiž není úplně snadné říct, kdy jsou si objekty rovny... :)

A co by si řekl?

Pokud se nehraje na identitu, tak mi to přijde krásně čisté:
Kód: [Vybrat]
1 == 1
"1" == "1"
{} == {}
{x: 1} == {x: 1}
new String("x") == new String("x")

Má to spoustu pěknejch důsledků. (A taky pár podrazů.)

1093
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 21:03:16 »
Citace
new String('aa') == new String('aa')
{} == {}

Tady zase porovnáváš objekt s objektem. No a shodné objekty to nejsou. Tzn. je to konzistentní.

Tady někde je tuším ta hranice, kdy se přepíná mezi porovnávání hodnoty, a porovnávání identity. Což je další matení nepřítele, že si se dvěma oparátory (== a ===) vlastně furt nevystačíš.

1094
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 19:55:50 »
Funny je, že musí přijít @Kit a mluvit k tématu. Zase se po nějaké době shodneme. :)

Kit a k tématu? Ano, to je Funny.

1095
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 19:55:09 »
Možná to díky citacím vypadlo z kontextu, ale "uvnitř" je tu použito ve smyslu "uvnitř proměnné". Nevím, co je zlého na tomto:

Kód: [Vybrat]
let x = 100;
let y = "ahoj";
typeof x;
typeof y;

A v jakém smyslu se to liší od tohoto?

Kód: [Vybrat]
if (ptr == NULL)

Z jakého důvodu by to ze mě mělo dělat špatného programátora?

Tak takhle je to v pořádku. Zdá se, že jsem tě špatně pochopil. Omlouvám se.

Narážel jsem na tohle:

Kód: [Vybrat]
def format(a, b):
    return a + b

format(1, 2)
Špatný název protože "tak se kouknu dovnitř, co to dělá, že jo".

Stran: 1 ... 71 72 [73] 74 75 ... 133