Koncept OOP nemá nic společného s konceptem zasílání zpráv,
To se velmi mýlíš. OOP bylo od začátku založeno na posílání zpráv mezi objekty, to je jeho klíčový koncept. Že to dnešní programátoři nechápou, to je právě práce C++. Jestli si to nemyslíš, můžeš zkusit Alana Kaye vyškolit o tom, co to je OOP
OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things. It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_enAnebo i Joe Armstronga
http://www.infoq.com/interviews/johnson-armstrong-oop - pasáž "Is Erlang object oriented?"
To proč se donekonečna zmiňuje mylné zasílání zpráv objektům má pravděpodobně základ v tehdejší implementaci virtuálních metod, vtable v roce 1970 ještě asi nebylo známo, takže pro podporu late binding se volání metod pravděpodobně realizovalo přes zmíněné dynamic dispatch a to je blízké konceptu zasílání zpráv.
Ne, má to základ v tom, že žádné vtable nebylo potřeba, protože se opravdu zasílaly zprávy, nikoli volaly funkce. Vtable je mrzká snaha emulovat zasílání zpráv pomocí volání funkcí. Je to rychlé (což byla motivace), ale vede to tam, kam to vedlo.
Absence předávání zpráv mezi objekty není příčina problémů s paralelismem, tou jsou sdílená modifikovatelná data.
A proč jsou sdílená modifikovatelná data? Protože se volají funkce, místo aby se zasílaly zprávy. Protože údajně "zapouzdřené" objekty jsou ve skutečnosti jenom funkce běžící synchronně v tom samém vlákně a zaručeně v tom samém paměťovém prostoru. Chceš-li jinak, musíš kolem toho dělat opičárny jako různé reflexe a pseudoreflexe. Když opravdu posíláš zprývy, je ti jedno, jestli objekt žije na tomtéž počítači nebo na druhém konci planety. Neřešíš žádnou shared memory. Prostě pošleš zprávu objektu. Kdo, jak a kam ji doručí je ti jedno.
To jde už dlouho, jenom místo instance.foo(args) napíšete instance.MujSkvelyRozhodovac("Foo", args), volitelně můžete kombinovat s thread-safe queue.
Tak jistě. Když něco v jazyce nejde, vždycky to můžu nějak nasimulovat, alespoň dikud je jazyk Turingovsky kompletní, že... Jak že to říká ta okřídlená věta? Že můžeš Lisp buď přímo použít nebo ho reimplementovat v jiném jazyce? Tady je to stejný - buď použiješ jazyk s dobrou podporou předávání zpráv, nebo ji budeš špatně reimplementovat. A tohle je hodně špatná implementace.