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.