Sunday, April 29, 2012

OO != Computing, Newer != More modern

Have you ever heard a Java-only programmer complain about your way of solving a problem is "bad because it is not object oriented". Java is one of the (relative to Smalltalk or Lisp) new languages, hence it must be more modern, right? And ORMs are newer and hipper than those old boring outdated relational databases. Am I not right?

Newer does not equal more modern. The problem is that not too many people bother to try to understand - to take one example - why Codd invented the relational model. What were the problems he tried to solve?

Here is an excellent talk, Programming and Scaling, by Alan Kay that really drives home the importance of having broader understanding of the history of computing and be willing to learn new perspectives.

Some good quotes (it is not a "modern" OO-bashing talk, but I chose these because I find them most applicable to the ORM-mess we are in today):

"I made up the term object oriented programming, but I made it up for something different than the term stands for today."
"[Alas] in computing we are happy to not understand what most of the founders of our field actually did."
"Lots of so called object oriented languages have setters and when you have an setter on an object you turned it back into a data structure."
"One of the problems of some of these semi-new ideas is that when they got translated into C-based forms in order to be recognizable to people, the things that were like these old ideas were emphesised. So for example you got this terrible idea of having a so called object oriented system and turning it back into data structures by putting setters in, which allow the various same disasters, remote assignment statements, to be done which turns the system into a much more fragile way of thinking about things."
"Probably the most disastrous thing you can ever learn is your first programming languange, even if it is a good programming language. The reason is that it tends to be [your internal model of] computing."
"Whatever it is that we think we know today, we should shut it of periodically and see if we can find other things to learn about."