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 - Mirek Prýmek

Stran: 1 ... 80 81 [82] 83 84 ... 618
1216
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 18:14:33 »
V tom popisu ale není nic o tom, že se ty hodnoty mají porovnávat operátorem ==.
Mně už zbývá v hlavě jediná otázka: připomíná mi tohle spíš Havla nebo Goebbelse? Nějak se nemůžu rozhodnout.

1217
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 17:37:31 »
další je, že jsou programátoři z něčeho zmatení
Coz je presne to, o cem se tady celou dobu bavime.

1218
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 17:12:53 »
To je právě ten problém, že vy se na to pořád díváte tak, že co vyhovuje vám, musí vyhovovat všem, a co vám nevyhovuje, nemůže vyhovovat nikomu. JavaScript vznikla za nějakým účelem, a pro daný účel je vnitřní reprezentace čísel úplně nezajímavá.
Marxismus-leninismus taky vznikl v nejake dobe za nejakym ucelem a v te dobe a pro ten ucel to mohlo nekomu pripadat jako docela dobry napad.

1219
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 16:29:30 »
If the value p being boxed is an integer literal of type int between -128 and 127 inclusive (§3.10.1), or the boolean literal true or false (§3.10.3), or a character literal between '\u0000' and '\u007f' inclusive (§3.10.4), then let a and b be the results of any two boxing conversions of p. It is always the case that a == b.
To je uz skoro jak == v JS :)))

Jinak ale diky za vecne upresneni. Konecne teda misto kecu overitelna fakta.

1220
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 16:20:30 »
V případě Javy je to pochybení, ale tak je to historie, nemusíme je v tom máchat.
Jedinej, kdo se tady v tom macha, je Filip. Urcite to neni jediny zdejsi javista. Kdyby neobhajoval neobhajitelne pruhlednymi demagogiemi a rekl "jasny hosi, tohle muze nekoho zmast, ale jinak je ta Java stejne docela fajn, ne?", nerekl by nikdo ani popel.

1221
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 16:17:14 »
co nesplňuje snad žádný programovací jazyk, není programátor. Nebo mi ukažte jazyk, který (alespoň ve výchozím nastavení, tj. bez přetěžování operátorů) porovnává vše podle hodnoty.
Prakticky kazdy funkcionalni jazyk? Prakticky kazdy jazyk se strukturalnim typovanim?

Samozrejme bez "neceho jako pretypovani" to nejde, respektive by to nebylo uplne prakticke - sam jste psal, ze relaci ekvivalence je hodne, takze pri definici typu se proste dost hodi rict, kterou z nich chci :) Jak psal kolega: obvykle to ani nemusim psat, nejtypictejsi pripad si umi prekladac snadno odvodit (porovnani po slozkach).

Nikoli, programátoři z toho zmatení nejsou a chyby v tom nedělají. Programováním se živím už spoustu let, a že se někdo pokusil v Javě porovnat Stringy pomocí == jsem viděl jednou, v kódu, který ještě ani nebyl commitnutý.
Pekna. A mate rad i tu o Budulinkovi?



Že neprogramátorům vadí chování operátoru ==
Konecne jsem to pochopil, vy jste tady jediny programator a vsichni ostatni jsou...

asi lopaty, co?

, moc nechápu, proč to řeší.
Jo, to je videt, protoze porad melete ty same veci dokola a vubec nereflektujete, co vam tady lidi rikaji.

úplně stejně to má C, C++, JavaScript, Python a mnoho dalších jazyků (přičemž jen některé umožňují operátor přetížit)
To je jako byste napsal, ze ze Lojza ma jednu ruku a uplne vsichni ostatni lidi jsou na tom stejne, akorat nekteri z nich maji dve.

OMG!

, to jenom ilustruje úroveň znalostí.
Uz chapu, proc se za Javu tolik plati. Odpovida to urovni ega.

Ano, lze napsat kód prasácky, a když to pak jiné prase čte a očekává něco, co si neověří,
Nedej matko prirodo, aby si to ten ubohy nedouk dokonce vyzkousel - akorat na tzv. "malych cislech" :)

Mimochodem, představte si, že v tom vašem příkladu a bude float a b bude double.
Predstavoval jsem si to tak silne, az se mi to zhmotnilo: https://play.golang.org/p/Jw9NlBT_VC_1

1222
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 13:39:09 »
Upozornění v IDE, že porovnává objekty ho může zachránit, ale ne každý editor kódu to umí.
Hlavně IDE by neměl být narovnávák na vohýbáky v jazyce.

1223
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 09:40:52 »
Tahle jednoduchost jazyka je velice silná vlastnost Javy – proto je také tak oblíbená.
Ve skutečnosti je i programování v shellu oblíbenější :)

https://insights.stackoverflow.com/survey/2019#technology-_-most-loved-dreaded-and-wanted-languages

1224
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 01:58:13 »
Na druhém řádku se volá statická metoda, ta mi vrátí nějakou referenci. Nikde není řečeno, zda pro stejné hodnoty to bude vracet jeden objekt nebo dva různé objekty. V té metodě klidně může být orákulum, které vám v polovině případů bude vracet objekt z poolu a v druhé polovině případů nové instance. Takže o té rovnosti nelze bez znalosti konkrétní implementace rozhodnout, zda platí nebo neplatí.
Ano, já to naprosto chápu. A jednoduše si nepřeju, aby se jazyk, se kterým pracuju, choval nepředvídatelným způsobem, podle orákula, podle denní doby, podle nálady v RedMondu nebo aktuální výše zlatých padáků v Redwood Shores. Obzvláště ne pokud se to týká základních, stupidně jednoduchých typů jako "integer o něco větší než padesát".

1225
Vývoj / Re:Ideálny programovací jazyk
« kdy: 16. 05. 2019, 01:43:11 »
Fungoval mu program správně v testu s malými čísly? Ano. Fungoval mu správně na produkci s velkými čísly? Ano.
Ne, nefungovalo mu to na produkci s velkými čísly. Protože se mylně domníval, že to v Javě funguje jako v Erlangu.

Blik?

1226
Vývoj / Re:Ideálny programovací jazyk
« kdy: 15. 05. 2019, 23:13:07 »
Ztracim se. Prece se tu rikalo, ze problem neni v tom operatoru, ale v te kesi....
Filip má velmi efektivní selektivní vnímání ;)

1227
Vývoj / Re:Ideálny programovací jazyk
« kdy: 15. 05. 2019, 23:09:39 »
V tom poolu konstant žádný problém není – když chápete rozdíl mezi hodnotou a referencí, nemůžete hodnotu Integerů nikdy porovnávat pomocí ==.
Omyl. Můžu si myslet, že to má Java vyřešeno stejně dobře jako Erlang atomy. Napíšu si na to i unit testy, ale jako na potvoru tam použiju "malá" čísla. A na produkci se objeví "velká" čísla.

Byla to neznalost programátora? Ano.  Byla to chyba programátora? Ano.

Programátor si myslel, že konstrukci rozumí a dokonce to i byla pravda - chtěl porovnávat reference (!!!) ). Co neznal, byly internals implementace poolu "malých" hodnot.

Byl jazykem překvapen? Byl. Má ideální jazyk programátora překvapovat? Nemá.

Zopakuje Filip Jirsák po stopadesáté první, že někdo nechápe rozdíl mezi referencí a hodnotou a s poolem to nemá co dělat? Nevíme, ale je to velmi pravděpodobné.

protože operátory jsou vždy v nějakém případě kontraintuitivní
Můžete uvést příklad z Elixiru nebo Rustu?
Tak třeba Rust má spoustu operátorů, které nejsou vůbec intuitivní, to je problém sám o sobě.
Ok. A ten příkad teda?

protože u složitějších typů vždy narazíme na to, že prostě není jasné, co je to rovnost.
Nevím, proč bysme měli. Třídy ekvivalence mají být součástí definice typu. Jistě, jsou situace, kdy se dají nadefinovat různě. To už je na programátorovi, jak si je chce nadefinovat. Ale nevidím v tom sebemenší problém, natož abychom na něj "vždy naráželi".

Podívejte se třeba, jak má Haskell nadefinovanou třídu Eq. Problém je kde?

1228
Vývoj / Re:Ideálny programovací jazyk
« kdy: 15. 05. 2019, 19:39:06 »
Nejak si nevzpominam, ze by me zrovna kes integeru nejak otravovala. Mas priklad kde by to mel byt problem, ktery vyzaduje pozornost?
Jakykoliv priklad, kde jako zacatecnik budu predpokladat, ze 1000 je 1000 :)

1229
Vývoj / Re:Ideálny programovací jazyk
« kdy: 15. 05. 2019, 17:05:07 »
Třeba ty zmíněné atomy v Erlangu jsou taky vnitřně uložené jako integery (takže obdoba ukazatelů), ale je jasně zadefinované, že když vytvářím atom třeba ze stringu, tak buďto v "cachi"/"poolu" už je, potom se ten integer zaručeně použije, nebo tam není, tak se vytvoří a pro příští volání se stejnou hodnotou bude platit první varianta.
Nebo jednou větou: podle mě by to singleton buď měl nebo neměl být z definice.

1230
Vývoj / Re:Ideálny programovací jazyk
« kdy: 15. 05. 2019, 17:03:58 »
To je ale jedno, ne? Prostě to je oficiálně nedefinované.
Nevím jestli je to jedno a jestli zrovna tohle je vhodné nechat nedefinované.

Třeba ty zmíněné atomy v Erlangu jsou taky vnitřně uložené jako integery (takže obdoba ukazatelů), ale je jasně zadefinované, že když vytvářím atom třeba ze stringu, tak buďto v "cachi"/"poolu" už je, potom se ten integer zaručeně použije, nebo tam není, tak se vytvoří a pro příští volání se stejnou hodnotou bude platit první varianta.

Jasně, určitě existuje bambilion argumentů, proč to tak (alespoň v některých implementacích) javy není, nehodlám s nimi polemizovat. Čistě s BoneFlutem konstatuju, že mě by tohle v jazyce, ve kterém bych dělal, otravovalo.

Stran: 1 ... 80 81 [82] 83 84 ... 618