March 1st, 2015
(written by lawrence krubner, however indented passages are often quotes). You can contact lawrence at: email@example.com
I didn’t think you were such an OO partisan. If you are, then you
will probably find my reasons for despising it (other than the above)
to be very touchy-feely, and they are. I think comprehensive OO
(occasional OO is fine) is a very poor metaphor for the world, a poor
tool for problem solving, and an unnatural way to think. Here are
some particulars off the top of my head:
- It accounts poorly for symmetric interaction, such as chemical
reactions and gravity.
- It deals poorly with information-oriented phenomena such as
mathematical objects, copying, broadcast, encryption, caching, and
signing. E takes a step in the right direction by introducing the
“selfless” notion, but this isn’t enough.
- It usually has a very imperative, operational flavor to it.
It begs you to write a recipe, not to describe the result that you
want as functional languages do. This isn’t really inherent, and E
is much better on this count than C++/Java.
- It forces you to always decide who’s on top in any interaction,
i.e. which object should define the method, a decision that’s not
always easy and one that you often want to change.
- It’s a poor match both syntactically and semantically with
natural language, making it awkward for expressing things that are
in people’s minds.
I have a feeling that Brian Smith (_On the Origin of Objects_ is a
philosophical critique of the conventional notions of “object”) and I
agree on a lot of this, although I don’t know because I don’t
understand the book.