

First algorithms, then interfaces - 10ren
http://c2.com/cgi/wiki?ObjectOrientationIsaHoax

======
btilly
_The Structure and Interpretation of Computer Programming_ has a very relevant
comment about this exact topic:

 _Developing a useful, general framework for expressing the relations among
different types of entities (what philosophers call ``ontology'') seems
intractably difficult. The main difference between the confusion that existed
ten years ago and the confusion that exists now is that now a variety of
inadequate ontological theories have been embodied in a plethora of
correspondingly inadequate programming languages. For example, much of the
complexity of object-oriented programming languages -- and the subtle and
confusing differences among contemporary object-oriented languages -- centers
on the treatment of generic operations on interrelated types._

Ouch. This was written in 1996, but I don't think that languages like Java and
Ruby have changed the state of the art that is being discussed. See
[http://mitpress.mit.edu/sicp/full-text/book/book-
Z-H-18.html...](http://mitpress.mit.edu/sicp/full-text/book/book-
Z-H-18.html#footnote_Temp_289) for the full context of this quote. (I was
quoting from footnote 52.)

In an odd unrelated note, I've noted that there is some correlation between
people's opinions on object oriented programming and how they eat corn. See
[http://bentilly.blogspot.com/2010/08/analysis-vs-algebra-
pre...](http://bentilly.blogspot.com/2010/08/analysis-vs-algebra-predicts-
eating.html) for more on this.

~~~
10ren
Spirals here. My programming is dominated by efficiency concerns - the whole
point is to make it as short as possible, right? It's morally wrong to have
waste. And in an information theoretic sense, a more compact representation,
by encoding a simpler theory, usually better generalizes over reality -
occam's razor (more parsimony.)

And this obsession is also a great weakness of course, because it makes
central something that is not central. I have great trouble with some parsing
issues (which I think is very algebraic - certainly regular expressions are),
because it is just that little bit too complex for me to intuitively grasp the
efficiency issues. Instead, I should use (inefficient) algebraic abstraction.
But... it's just not quite natural for me, and I just can't quite grasp it.

------
signa11
in-depth discussion on the subject by 'psnively' over at reddit : [
[http://www.reddit.com/r/programming/comments/dg1n3/alexander...](http://www.reddit.com/r/programming/comments/dg1n3/alexander_stepanov_i_think_that_object/)
]

