Dědičnost dnes

balki

Re:Dědičnost dnes
« Odpověď #480 kdy: 27. 01. 2017, 16:02:40 »
Predavanie "sprav" v smalltalku je tiez len posielanie objektov do inych objetov cez selectory.  Inac povedane volanie metod s parametrami.  Nie je to ziadna objektova magia. Je to to iste co napriklad aj v C++ .

Ty to schytáš :) Ale tak když už tomu nerozumíš, je lepší mlčet (univerzální pravidlo)... #doesNotUnderstand ;-)
Čekal jsem, kdo na tu krávovinu zareaguje :)

Ok, berem spat, v smalltalku sa selectory, ekvivalenty metod nepouzivaju. Ani objekty sa nepredavaju cez selectory ako "spravy".  Ono v tom smalltalku proste je to cele magicke a objekty sa rozpravaju recou starych kuzelnikov.

Ty si nedáš říci .. no tak mi naprogramuj následující tři prográmky (ve smalltalku téměř one-linery) v C++:

1) Zeptej se uživatele na string, a pošli objektu Foo zprávu (nebo v C++ terminologii zavolej na objektu Foo metodu), která se jmenuje stejně jako zadaný String. Vypiš uživateli výsledek volání, pokud Foo danou metodu nemá, vypiš uživateli, že to neumí..

2) Za běhu zjisti, jaké zprávy Foo umí přijímat

3) Stejně jako 1, ale pokud Foo zprávu neumí, za běhu přidej implementaci, která vrátí String "Jsem tu nová", a opakuj volání zprávy na Foo

4) (to už se netýká zpráv, ale jen tak pro zajímavost): Za běhu zjisti, jaké třídy je Foo instance, a jaké další podtřídy tato třída má.

Pod řešení mi můžeš napsat, že zprávy v C++ a ve Smalltalku jsou to same.
Jde o jednoho z místních trolů, takže bych radil nereagovat.

Preco, mna tieto pseudoodborne diskusie o tom co je "prave" OOP celkom bavia.


balki

Re:Dědičnost dnes
« Odpověď #481 kdy: 27. 01. 2017, 16:07:38 »
To je uz ina vec, ze c++ nema tolke moznosti reflexie a nie je dynamicky typovany. Skratka stale zahmlievate fakt, ze posielanie messagov je analogia k volaniu metod. Pokial si spominam, neexistujuci selector je tiez len dalsi pripad selectoru.  Takze nie je potrebne to ponimat ako magiu.

Repostujem, aby nezaniklo

ava

Re:Dědičnost dnes
« Odpověď #482 kdy: 27. 01. 2017, 16:08:14 »
To je uz ina vec, ze c++ nema tolke moznosti reflexie a nie je dynamicky typovany. Skratka stale zahmlievate fakt, ze posielanie messagov je analogia k volaniu metod. Pokial si spominam, neexistujuci selector je tiez len dalsi pripad selectoru.  Takze nie je potrebne to ponimat ako magiu.

Aha, tak jestli jsem si měl z tvého příspěvku odnést, že posílání zpráv ve smalltalku není objektová magie, tak to pardon, díky moc za hluboký vhled, to mi otočilo světla...

balki

Re:Dědičnost dnes
« Odpověď #483 kdy: 27. 01. 2017, 16:12:34 »
To je uz ina vec, ze c++ nema tolke moznosti reflexie a nie je dynamicky typovany. Skratka stale zahmlievate fakt, ze posielanie messagov je analogia k volaniu metod. Pokial si spominam, neexistujuci selector je tiez len dalsi pripad selectoru.  Takze nie je potrebne to ponimat ako magiu.

Aha, tak jestli jsem si měl z tvého příspěvku odnést, že posílání zpráv ve smalltalku není objektová magie, tak to pardon, díky moc za hluboký vhled, to mi otočilo světla...

Len tu bolo posielanie sprav tak prezentovane. Ze ostatne OOP jazyky to nemaju. Tak som vybral ako priklad ten najhorsi OOP jazyk.

ava

Re:Dědičnost dnes
« Odpověď #484 kdy: 27. 01. 2017, 16:14:52 »

Aha, tak jestli jsem si měl z tvého příspěvku odnést, že posílání zpráv ve smalltalku není objektová magie, tak to pardon, díky moc za hluboký vhled, to mi otočilo světla...

Len tu bolo posielanie sprav tak prezentovane. Ze ostatne OOP jazyky to nemaju. Tak som vybral ako priklad ten najhorsi OOP jazyk.

Kde to tak bylo prezentované? Rozhodně ne v příspěvku, na který jsi reagoval.


balki

Re:Dědičnost dnes
« Odpověď #485 kdy: 27. 01. 2017, 16:17:25 »
...A take asi zjistil, jak jsou tve rychle usudky naivni. ;-) ...

Jo, a na ty rychlé úsudky pozor, čistému OP se věnuju mnoho let.
"Čisté" OOP je tak trochu iluze, ne? Aspoň v praxi...

Podle mě je Smalltalk čistý OOP jazyk, a v praxi se používá velice příjemně.
Souhlas, ale není to mainstream. Moje chyba, napsal jsem to blbě, měl jsem na mysli, že se v "čisté" podobě nevyskytuje v mainstreamu. V ObjC je hezké předávání zpráv, ale zase má primitivní typy (protože to je trošku rozšířené C), Swift není dynamický a vlastně mě z těch "velkých" jazyků nenapadá žádný, co by byl (ve smyslu OOP).

ava

Re:Dědičnost dnes
« Odpověď #486 kdy: 27. 01. 2017, 16:22:42 »
OK, tady pisatel, předpokládám, myslel přinejmenším bod 1) mého úkolu. Ten C++ neumí, takže předávání ve smalltalku není stejné jako v C++ a nemáš pravdu. Nebo bod 1) nepovažuješ za předávání zpráv ale za reflexi, a potom reaguješ na příspěvek, který se předávání zpráv (podle tebe) netýká. Jsem zmaten, a končím s touto debatou, není plodná.

balki

Re:Dědičnost dnes
« Odpověď #487 kdy: 27. 01. 2017, 16:27:35 »
OK, tady pisatel, předpokládám, myslel přinejmenším bod 1) mého úkolu. Ten C++ neumí, takže předávání ve smalltalku není stejné jako v C++ a nemáš pravdu. Nebo bod 1) nepovažuješ za předávání zpráv ale za reflexi, a potom reaguješ na příspěvek, který se předávání zpráv (podle tebe) netýká. Jsem zmaten, a končím s touto debatou, není plodná.

Ja som z vas zmateny tiez.  Reflexiu proste nazyvam reflexiou. A ostatne, netusim o com hovorite.

javaman ()

Re:Dědičnost dnes
« Odpověď #488 kdy: 27. 01. 2017, 16:31:41 »
Hlavně asi těžko budu volat metodu dynamicky :D Co bych z toho měl? Komu tím jako prospěju? Co na to architekt u vás?

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Dědičnost dnes
« Odpověď #489 kdy: 27. 01. 2017, 16:40:09 »
OK, tady pisatel, předpokládám, myslel přinejmenším bod 1) mého úkolu. Ten C++ neumí, takže předávání ve smalltalku není stejné jako v C++ a nemáš pravdu. Nebo bod 1) nepovažuješ za předávání zpráv ale za reflexi, a potom reaguješ na příspěvek, který se předávání zpráv (podle tebe) netýká. Jsem zmaten, a končím s touto debatou, není plodná.
Stěžejní je IMHO forwardSelector, jinak si člověk celkem vystačí s virtuálními metodami.

čumil

Re:Dědičnost dnes
« Odpověď #490 kdy: 27. 01. 2017, 18:14:04 »
Hlavně asi těžko budu volat metodu dynamicky :D Co bych z toho měl? Komu tím jako prospěju? Co na to architekt u vás?
Proxy

javaman ()

Re:Dědičnost dnes
« Odpověď #491 kdy: 27. 01. 2017, 18:17:35 »
Proxy čeho? Já teda chci přesně vědět, co budu volat. Případně to udělám reflexí... neudělám! :D

čumil

Re:Dědičnost dnes
« Odpověď #492 kdy: 27. 01. 2017, 18:18:28 »
OK, tady pisatel, předpokládám, myslel přinejmenším bod 1) mého úkolu. Ten C++ neumí, takže předávání ve smalltalku není stejné jako v C++ a nemáš pravdu. Nebo bod 1) nepovažuješ za předávání zpráv ale za reflexi, a potom reaguješ na příspěvek, který se předávání zpráv (podle tebe) netýká. Jsem zmaten, a končím s touto debatou, není plodná.
Stěžejní je IMHO forwardSelector, jinak si člověk celkem vystačí s virtuálními metodami.
Virtualky jsou jen chaba nahrada toho co máš třeba v js.
Jakejkoli typovej system nejde dohromady s oop, pak vznikaj jenom kompromisy..

čumil

Re:Dědičnost dnes
« Odpověď #493 kdy: 27. 01. 2017, 18:19:59 »
Proxy čeho? Já teda chci přesně vědět, co budu volat. Případně to udělám reflexí... neudělám! :D
Klidně proxy proxy. Podle chuti osol.

javaman ()

Re:Dědičnost dnes
« Odpověď #494 kdy: 27. 01. 2017, 18:25:56 »
Proxy čeho? Já teda chci přesně vědět, co budu volat. Případně to udělám reflexí... neudělám! :D
Klidně proxy proxy. Podle chuti osol.

Proxy se dělá přes rozhraní, takže asi nemám problém s tím, co mám volat :D Jako chápu, že musí být pro frikulíny mít každou část nezávislou a přidávat věci podle potřeby, ale takhle se nevyvíjí.