Dědičnost dnes

balki

Re:Dědičnost dnes
« Odpověď #495 kdy: 27. 01. 2017, 18:57:36 »
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..

OOP nie je o tom, ci sa pouziva staticke, alebo dynamicke typovanie. Oboje ma svoje nevyhody a vyhody.
Su tam podobne problemy ako v inych paradigmach so statickym a dynamickym typovanim.  Staticke typovanie ide dobre dokopy s OOP.





balki

Re:Dědičnost dnes
« Odpověď #496 kdy: 27. 01. 2017, 19:00:08 »
Dodam, ze to, ze je smalltalk dynamicky typovany, je sposobene tym, ze sa allen key inspiroval lisp-om. Ak by sa inspiroval algolom, vyzeralo by to zasa inak.

ferren

Re:Dědičnost dnes
« Odpověď #497 kdy: 27. 01. 2017, 19:24:40 »
ten uvadeny ukol, pokud by nekdo takoveto predavani zprav v c++ fakt chtel, tak samozrejme nastroje ma ( nenapada me moc duvidu proc to delat ale). jen si ten msg handler musis napsat plus u metod pouzit preprocesor a dynamicky generovany source. viz treba zdrojaky unreal enginu, kde se to pouziva na mix c++ a node graph based scriptingu

jinak je to nesmyslne zadani, nezadava problem k reseni ale za to podsouva implementaci.
nestrane zadani ukolu 1 by pak napr znelo nejak jako proved funkcionalitu dle zadaneho vstupu, no a pak bys od ceckare dostal prachsprostej switch/case/default ;-)

gll

Re:Dědičnost dnes
« Odpověď #498 kdy: 27. 01. 2017, 19:52:03 »
jinak je to nesmyslne zadani, nezadava problem k reseni ale za to podsouva implementaci.
nestrane zadani ukolu 1 by pak napr znelo nejak jako proved funkcionalitu dle zadaneho vstupu, no a pak bys od ceckare dostal prachsprostej switch/case/default ;-)

má to využití hlavně při interaktivním používání v různých shellech a při testování programu během vývoje. Podobné featury mohou podstatně urychlit vývoj, i pokud se ve finálním kódu nepoužijí. Zrovna u her to asi moc nevyužijete, ale třeba efektivní práci s webovými API nebo s databází si ve statickém jazyce moc představit nedokážu.

Kiwi

Re:Dědičnost dnes
« Odpověď #499 kdy: 27. 01. 2017, 19:56:14 »
ten uvadeny ukol, pokud by nekdo takoveto predavani zprav v c++ fakt chtel, tak samozrejme nastroje ma ( nenapada me moc duvidu proc to delat ale). jen si ten msg handler musis napsat plus u metod pouzit preprocesor a dynamicky generovany source. viz treba zdrojaky unreal enginu, kde se to pouziva na mix c++ a node graph based scriptingu

jinak je to nesmyslne zadani, nezadava problem k reseni ale za to podsouva implementaci.
nestrane zadani ukolu 1 by pak napr znelo nejak jako proved funkcionalitu dle zadaneho vstupu, no a pak bys od ceckare dostal prachsprostej switch/case/default ;-)

Řídící objekty, agregační funkce, zástupné hodnoty, distribuované objekty, objektové vazby v MVC... Tam všude to, na co ten úkol mířil,  dost výrazně ulehčuje práci.


javaman ()

Re:Dědičnost dnes
« Odpověď #500 kdy: 27. 01. 2017, 19:56:20 »
Kdyby to urychlovalo vývoj, tak se to používá. To je asi jako že ženy jsou stejně schopné jako muži, jen dostávají méně. Kdyby byly tak úžasné, tak jsou všude, ne?

gll

Re:Dědičnost dnes
« Odpověď #501 kdy: 27. 01. 2017, 20:00:50 »
Kdyby to urychlovalo vývoj, tak se to používá. To je asi jako že ženy jsou stejně schopné jako muži, jen dostávají méně. Kdyby byly tak úžasné, tak jsou všude, ne?

Musí se to umět používat a dodržovat určitou disciplínu. Když v tom budeš programovat stejně jako v Javě, tak to tvou produktivitu naopak sníží.

ferren

Re:Dědičnost dnes
« Odpověď #502 kdy: 27. 01. 2017, 20:07:07 »
jinak je to nesmyslne zadani, nezadava problem k reseni ale za to podsouva implementaci.
nestrane zadani ukolu 1 by pak napr znelo nejak jako proved funkcionalitu dle zadaneho vstupu, no a pak bys od ceckare dostal prachsprostej switch/case/default ;-)

má to využití hlavně při interaktivním používání v různých shellech a při testování programu během vývoje. Podobné featury mohou podstatně urychlit vývoj, i pokud se ve finálním kódu nepoužijí. Zrovna u her to asi moc nevyužijete, ale třeba efektivní práci s webovými API nebo s databází si ve statickém jazyce moc představit nedokážu.

na to pak staci metoda uvadena u unreal enginu. z kazde metody mas pak napr krabicku s porty, co si pak muzes libovolne chainovat v gui. nebo v tvem pripade treba shellu.
jinak samozrejme c++ ma bindingy temer na vsechny jazyky, tak bych treba na to pouzil Lua uvnitr c++ treba. nebo treba lisp/scheme kde jsem si msg passing na skole uzil do sytosti:-)

gll

Re:Dědičnost dnes
« Odpověď #503 kdy: 27. 01. 2017, 20:13:26 »
jinak je to nesmyslne zadani, nezadava problem k reseni ale za to podsouva implementaci.
nestrane zadani ukolu 1 by pak napr znelo nejak jako proved funkcionalitu dle zadaneho vstupu, no a pak bys od ceckare dostal prachsprostej switch/case/default ;-)

má to využití hlavně při interaktivním používání v různých shellech a při testování programu během vývoje. Podobné featury mohou podstatně urychlit vývoj, i pokud se ve finálním kódu nepoužijí. Zrovna u her to asi moc nevyužijete, ale třeba efektivní práci s webovými API nebo s databází si ve statickém jazyce moc představit nedokážu.

na to pak staci metoda uvadena u unreal enginu. z kazde metody mas pak napr krabicku s porty, co si pak muzes libovolne chainovat v gui. nebo v tvem pripade treba shellu.
jinak samozrejme c++ ma bindingy temer na vsechny jazyky, tak bych treba na to pouzil Lua uvnitr c++ treba. nebo treba lisp/scheme kde jsem si msg passing na skole uzil do sytosti:-)

Nebo naopak můžete z aplikace ve skriptovacím jazyce volat C/C++ funkce pomocí FFI. To vyjde téměř nastejno. Asi se shodneme, že každý jazyk se hodí na něco jiného.

ferren

Re:Dědičnost dnes
« Odpověď #504 kdy: 27. 01. 2017, 20:19:54 »
jinak je to nesmyslne zadani, nezadava problem k reseni ale za to podsouva implementaci.
nestrane zadani ukolu 1 by pak napr znelo nejak jako proved funkcionalitu dle zadaneho vstupu, no a pak bys od ceckare dostal prachsprostej switch/case/default ;-)

má to využití hlavně při interaktivním používání v různých shellech a při testování programu během vývoje. Podobné featury mohou podstatně urychlit vývoj, i pokud se ve finálním kódu nepoužijí. Zrovna u her to asi moc nevyužijete, ale třeba efektivní práci s webovými API nebo s databází si ve statickém jazyce moc představit nedokážu.

na to pak staci metoda uvadena u unreal enginu. z kazde metody mas pak napr krabicku s porty, co si pak muzes libovolne chainovat v gui. nebo v tvem pripade treba shellu.
jinak samozrejme c++ ma bindingy temer na vsechny jazyky, tak bych treba na to pouzil Lua uvnitr c++ treba. nebo treba lisp/scheme kde jsem si msg passing na skole uzil do sytosti:-)

Nebo naopak můžete z aplikace ve skriptovacím jazyce volat C/C++ funkce pomocí FFI. To vyjde téměř nastejno. Asi se shodneme, že každý jazyk se hodí na něco jiného.

vsak jo, ja jen reagoval na zadani "napis mi neco nemecky, aby to znelo francouzky"

gll

Re:Dědičnost dnes
« Odpověď #505 kdy: 27. 01. 2017, 20:53:06 »
vsak jo, ja jen reagoval na zadani "napis mi neco nemecky, aby to znelo francouzky"

Rozumím. Já se snažil říct, že nezáleží jen na problému, který řešíte, ale i postupech, které používáte. Ty body, které jmenoval zboj nemusí být součástí finálního řešení, ale mohou vám usnadnit jeho tvorbu.

v

Re:Dědičnost dnes
« Odpověď #506 kdy: 27. 01. 2017, 20:53:52 »
napis mi neco nemecky, aby to znelo francouzky
Flammekueche

Kiwi

Re:Dědičnost dnes
« Odpověď #507 kdy: 27. 01. 2017, 22:52:18 »
vsak jo, ja jen reagoval na zadani "napis mi neco nemecky, aby to znelo francouzky"

Tady přece nejde o to, že by něco nějak "říci" nešlo. Bavíme se o turingovsky úplných jazycích, což znamená, že v každém takovém jde "říci" všechno. Problém je v tom, jak složitě se ta věc v různých jazycích dá napsat. Zatímco v jednom je to na jeden, dva řádky, v jiném to může být na půl stránky. Zatímco Angličan řekne "he was writing", Čech řekne "psal". U jiných věcí to zas bude třeba naopak.
Takže když mi jazyk nabízí prostředky pro snadné zachycení zprávy, zjištění, který objekt dané zprávě rozumí, její přesměrování apod., tak se mi řada věcí dost zjednoduší. Např. kdybych psal nějaký vektorový kreslící program, tak zobrazení možných manipulací třeba po rightclicku bude naprosto triviální záležitost, fungující univerzálně pro všechny objekty. Takže mi to ušetří spoustu psaní a tím i spoustu potenciálních chyb a tím i spoustu času a tím to zvýší produktivitu mé práce.

Mám pocit, že lidé tohle kouzlení se zprávami, (multi)proxy, záchytnými objekty, budoucími objekty, pojmenovanými atributy atd. považují buď za nějaký šamanismus, nebo něco nečistého. Ale právě u takových věcí teprve naplno vyniknou výhody OOP oproti klasickému strukturovanému přístupu. Většina "objektových" programů, které mi prošly pod rukama, ve skutečnosti vůbec objektové nebyly. Akorát tam autoři nacpali procedury a data do tříd, ale žádnou výhodu to nepřineslo. Kdyby to bývali napsali klasicky strukturovaně, vyšlo by to nastejno s tím, že by to bylo o něco kratší o ten objektový syntaktický cukr. A je pravda, že "objektové" jazyky jako je C++ tomuto "kouzlení" vůbec nijak nepomáhají, narozdíl např. od Objective C.

Polymath

Re:Dědičnost dnes
« Odpověď #508 kdy: 27. 01. 2017, 23:27:47 »
napis mi neco nemecky, aby to znelo francouzky
Flammekueche
To neexistuje.

balki

Re:Dědičnost dnes
« Odpověď #509 kdy: 28. 01. 2017, 00:02:22 »
napis mi neco nemecky, aby to znelo francouzky
Flammekueche
To neexistuje.

Orangensahne creme