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 ... 254 255 [256] 257 258 ... 618
3826
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 11. 09. 2015, 10:05:46 »
To je v problému čtvercoobdélník splněno :) Čtverec má dané metody obdélníka, tedy je splněn daný protokol, problém zůstává.
To byla odpověď na to, čím se to liší od C++. V C++ nemůžeš existující objekt prohlásit za splňující protokol.

3827
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 11. 09. 2015, 09:42:24 »
Tohle je IMO jedině dobře :) Tohle totiž znamená taky to že překlepy v kódu se pořádně nekontrolují při překladu ale až při běhu. Nevím jak jiné, ale takový Python je v tomhle jazyk z nejhlubšího pekla.
To není pravda. Objective C dává warningy. S pythonem souhlas.

3828
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 11. 09. 2015, 09:29:58 »
Podľa mňa sa dedičnosť hodí hlavne tam kde treba dynamic dispatching.
Žádný mainstreamový jazyk skutečný dynamic dispatch nemá. Dynamic dispatch znamená, že umím na libovolnou zprávu (předem neznámou) odpovědět "Sorry, tohle neumím".

3829
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 11. 09. 2015, 08:30:46 »
A stejně neplatná
= kvůli stejným příčinám

3830
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 11. 09. 2015, 08:29:25 »
chytl jsi mě na větě, která byla zřejmě až příliš zjednodušující.
Příliš silná a proto neplatná. A stejně neplatná je představa, o které jsme se tady bavili nedávno v podobným tématu - že totiž OOP nějakým způsobem odpovídá tomu, jak svět vnímáme, nebo dokonce jaký svět objektivně je (jakási programátorská "ontologie" ve filosofickém smyslu). A protože to není pravda, padá i další bláhová představa o znovupoužitelnosti - že jednou nějaká dobrá duše napíše objekt Person a od té doby se bude už jenom používat.

Kvalitní implementace OOP s posíláním zpráv, opravdovým dynamic dispatchem, možností customizovat existující objekty (kategorie v Objective C) atd. se tomu můžou trochu blížit, protože tam není potřeba to s děděním přehánět. Ale pro mainstreamové OOP, kde se málem o ničem jiným než o dědičnosti nemluví, je to absolutní scifi, návnada na hejly.

3831
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 11. 09. 2015, 06:37:18 »
Je tedy správné se zeptat: V jakém kontextu chceš srovnávat čtverec a obdélník? [...] Ne, to nelze. Mohu však nadefinovat v požadovaném kontextu, zda je vazba rodičovská, sourozenecká nebo žádná.
Proto nemůžeš tvrdit, že to jsou sourozenci.

3832
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 10. 09. 2015, 23:54:39 »
Ještě jedna poznámka a už končím :)

OOP může úplně s klidem vést i k tomu, že právě code reuse není možný - právě kvůli té myšlence spojení dat a metod. Když mám entitu reprezentovanou jenom daty - a navíc ještě pokud možno jednoduchými strukturami (FP přístup), tak třeba kde co můžu mít reprezentované dvojicí. A můžu mít jenom jednu funkci swap, která prvky dvojice prohodí. Pak mi stačí už jenom třeba makrem říct, že pro obdélník je otočení, zatímco pro jméno je to převod z Češtiny do Maďarštiny ;)

Zkuste si tohle rozchodit v OOP - ideálně pomocí interface ISwappable, factory MakeSwappable, databáze mapující operaci swap na jeho význam pro různé objekty (samozřejmě hodnotou je pak konstanta z public final class SwappableSematics). A pak můžeme rozjet flame na téma, jestli je CzechToHungaryConvertor předek nebo dědic Generic2DObjectRotatorImmutable ;)

3833
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 10. 09. 2015, 23:37:45 »
Generika? C++ šablony? Makra? Code reuse se přece nemusí omezovat na spustitelný kód. Stačí když potřebné úpravy zvládne překladač sám.
...anebo právě ty protokoly. Chci generický bubblesort? Stačí mi, že pro strukturu existují funce compare a swap. Jak si je překladač najde, kam je uloží, kde je vezme, jak je spáruje s datovou strukturou, mi může být úplně buřt, já mám v kódu prostě
Kód: [Vybrat]
compare(jakakoliv_struktura,idx1,idx2)
a basta. O tom přece code reuse je - dělat věci genericky, za použití nějakého API. Callbacky jsou jenom jedna z možností implementace. Bohužel, když má někdo mozek nastavený na C, nebo nic jiného nepotkal, tak si to ani nedokáže představit...

3834
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 10. 09. 2015, 23:26:15 »
Ano? Čím se to liší od dědičnosti v C++?
Třeba tím, že můžeš dělat "inferenci" (nevím, jaký je v tomhle kontextu správný termín) - pokud existují dané metody, pak je splněn daný protokol. Klidně i v případě, že jsi ty metody napsal deset let před tím a protokol definuješ až teď. (Nejsem si jistý, jestli tohle pro Go platí, jde mi o princip, ne o konkrétní jazyk)


Víc než s deděním bych to srovnával se starým dobrým mixinem.


3835
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 10. 09. 2015, 23:19:07 »
Možná tomu říkají skládání, výsledek z hlediska metod je stejný jako dědění nevirtuálních metod v OOP.
Proto nějaké problémy zůstávají, do čtverce vložíte obdélník a zkriplíte SetWidth SetHeight, úplně stejně jako v OOP.
Nejde o to, kdo čemu jak říká, ale o to, že dědění a skládání je jiný koncept. Rozdíl zhruba odpovídá tomu "mít" a "být", co tady zaznělo. A důsledek je mj. větší volnost: nikdo se nebude do krve hádat, jestli struktura může mít nějakou položku, tam je snad každýmu jasný, že to je buřt. To je jeden z příjemných čistě praktických důsledků. Jiné důsledky jsou třeba, že tu vnitřní položku můžu snadno vracet, vyměnit, nahradit úplně jinou strukturou atd. atd. Co přesně z toho platí pro Go, nevím, o tom se nechci hádat, znám ho jenom z rychlíku.

3836
Studium a uplatnění / Re:Má cenu studovat IT navazující?
« kdy: 10. 09. 2015, 22:47:17 »
BTW, krásný komentář k tomu napsal Peregrin.
Áá, má to i na webu, moc doporučuju: http://jarda.peregrin.cz/mybibl/TOCs/460.pdf

3837
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 10. 09. 2015, 22:30:49 »
Tak. Developers by se neměli množit.
Množit se můžou, ale majetek by měli odkazovat charitě!

3838
Studium a uplatnění / Re:Má cenu studovat IT navazující?
« kdy: 10. 09. 2015, 22:28:45 »
Máš na mysli něco takového?
https://cs.wikipedia.org/wiki/Sokalova_af%C3%A9ra
Ne, Sokala opravdu nemyslím, ten naopak udělal docela dost chytrý pokus a ten jeho článek je dost zábava číst. BTW, krásný komentář k tomu napsal Peregrin.

Spíš myslím věci na způsob Goedelova důkazu Boží existence, o kterým doteď není úplně jasno, jestli ho myslel vážně, nebo si dělal srandu, nebo jenom něco zkoušel, nebo už byl v té době nepříčetný :) Příkladů filosofování, které se úplně nepovedlo, je víc.

Jenom nevím, proč se tak čertíš. Přece tou pakáží neměl na mysli tebe. Nesmíš být tak vztahovačný.
Mě určitě ne, já jsem hrdý majitel titulu Magistr Informatiky, což je klíč k nejméně třetímu zásvětnému stupni ne-humanitních uebermenschů. Jestli jsem se trochu čertil (ne moc), tak proto, že mě štve, že se moji kolegové projevují jako omezení fachidioti v době, která právě multidisciplinaritu tolik potřebuje.

3839
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 10. 09. 2015, 22:19:22 »
Nemohou, protože čtverec není obdélník a kružnice není elipsa. Jsou to sourozenci mající společné rodiče.
Pokud tvrdíš, že nějaké entity "jsou sourozenci", tak implicitně používáš nějaké uspořádání. Jaké? Jsi si jistý, že ten, proti komu argumentuješ, nepracuje s nějakým jiným uspořádáním? Nemíjíte se právě proto?

Podle mě totiž v tomhle je doopravdy ten zakopaný pes: každá OOP učebnice pracuje s tím, že to uspořádání je to, co intuitivně můžeme nazvat "obecnost" (pojmu): Žárovka je Svítidlo, Pes je Savec atd. A všechny tyhle přiblblé debaty pramení z toho, že tohle uspořádání sice výborně funguje v teorii, na ideálních příkladech, ale v praxi máš jiná kritéria => jiné uspořádání => jinou hierarchii.

Nebo snad umíš precizně a jednoznačně nadefinovat jediné správné uspořádání objektů, které by vytvořilo tu jedinou správnou hierarchii dědičnosti?

3840
Vývoj / Re:Omezená dědičnost (je něco lepšího než OOP?)
« kdy: 10. 09. 2015, 22:12:18 »
Dědičnost "nějak" opravdu funguje, problém čtvercoobdélník je v Go snad ještě horší :)
http://play.golang.org/p/Xe9AyAx-Bh
To není dědičnost, ale skládání. To si bohužel taky dost lidí dneska plete...

Citace
Since we then defined Car as an anonymous field in Ferrari, the latter class automatically can call on all the visible behaviors/methods of the anonymous field type. So here, we have not subclassed a parent class, but composed it.
http://golangtutorials.blogspot.cz/2011/06/inheritance-and-subclassing-in-go-or.html

Jaký problém tam vidíš? Já žádný. Rozhodně ne takový, aby vedl k plamenným debatám o tom, jestli je čtverec obdélník...

Stran: 1 ... 254 255 [256] 257 258 ... 618