Mainstream object-oriented programming languages are very lame at what they say defines them. C++, C#, Java and so many other object-oriented programming languages are so far behind the state of the art - it's shameful.
The simple truth is that Object.Method() is not the state of the art. If that's what it looks like when you invoke a member function, it means you don't have multimethods. Do you have access to your metaclasses? Can you customize your object model to increase performance, to help migrate code?
It's making us worst programmers
The lack of power of our programming languages means we produce code that's more verbose. Sadly we get used to it. We may even find a visitor beautiful ;-) When there is more code, we get better at ctrl-c ctrl-v ctrl-h. That leads to programmers asking for better refactoring tools for our preferred language. Sometimes, those who sell the refactoring tools also have a big say about the evolution of languages. Of course they'll take the easy path : they will give us what we ask. They won't make the language more powerfull - it would be stupid. First, because it would probably make the refactoring tools less reliable and more complex. Also, they would kill a nice market..... it's not in their advantage to make the languages less verbose.
The solution is our impatience
We don't know what we're missing. There is no buzz about CLOS because it's old and there's no big corporation supporting it with millions in marketing. If we find out what's out there and how good it is, the microsofts and suns of the world will understand they have to push for a better - more powerfull - language. We'll tell them! The solution is to read. Here is the deal. I give you a few suggestions of reading material, and you do the same.
My suggestions :
- Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS but you probably want to read up on lisp first.
- The Art of the Metaobject Protocol
What should I read?