Excerpts from James Noble's message of 2012-08-07 17:48:24 -0500:
>
> This reminds me of "My cat is object-oriented" - back from when? 1989?
>
> That Bob Harper thinks that OO is bad is a defensible position,
> with precedents back to Dijkstra and BASIC and COBOL.
> That he thinks OO is not well defined is not.
I'm not sure, because. . .
> I know William has been working on a new definition,
> but to a first approximation I'm happy with the Peter Wegener's definition:
>
> Object-Orientation = objects + classes + inheritance
. . . as you point out, there's just too many definitions floating around, and
they pull the discussion in different directions.
So I empathize with Bob Harper's position on both accounts. There is some
sloppy prior art with respect to object orientation. And the definition
somewhat twists in the wind.
To stop all the wind-twisting, I think there needs to be some drive to derive
more benefit/utility from the definition. From reading Bob's blog, I get the
sense that he's derived a lot of insights from studying abstractions completely
through type theory -- especially when bouncing between both sides of
Curry-Howard. So he's quick to dismiss a non-type-theoretic definition of
objects (is there one?).
If there were a formalization for William's much more compact definition of
objects that could lead to similar insights and understandings then I think
this kerfuffle may dissipate.
I believe William has expressed interest in keeping the discussion informal for
now, but I worry that there's only so far one can go with informality. These
informal discussions just go in circles.
From my cursory read of A Theory Of Objects, the formalizations there seem
lacking, but perhaps I should give it a second look. Everything else I've see
has been less about formalizing the essence of objects as phrased by William,
and more about encoding object-like behaviors in some other framework that
asserts its own spin/biases.
I want a definition that has a utility with respect to understanding
abstractions more deeply, so I don't want to over-special the definition.
Classes are unnecessary. Inheritance is unnecessary. We get down to the fact
that even a simple first class function is actually a degenerate object. This
is to me very insightful, because it seems very natural to ask "then is
/everything/ an object?" This leads to the answer that ADTs are not objects,
as per the "On Understanding" essay.
I'd just like to see if it's possible to explain all of this with some kind of
formalism.
-Sukant