First algorithms, then interfaces

  • 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... 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... for more on this.

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