The Deep Insights of Alan Kay
Thanks for this post; the importance of Alan Kay's work can hardly be overstated. Here's another quote by him that I find interesting:<p><i>I invented the term Object-Oriented and I can tell you I did not have C++ in mind.</i><p>Whether or not you share the disdain for C++ that is implicit in this quote, I believe it is important to understand the difference between the way OO was originally conceived of and the way C++ interprets it. I believe the best way to understand the difference is to look at object-variable binding. Smalltalk and almost every other OO language that followed it uses <i>reference semantics</i>: the assignment<p>x = y<p>causes the variable x to release its binding to whatever object it is currently referring to, and to refer to the object that y is referring to instead. C++, on the other hand, is pretty much the only OO language that uses <i>value semantics</i>: the intended meaning of the assignment<p>x = y<p>is to copy the state of the object to which y is referring over to the object to which x is referring. The older and wiser I get the more I am inclined to believe that this attempt to marry OO and value semantics was an experiment that has failed. Even if you do not believe this, you'd have to admit that the collective amount of time and effort that the C++ community has spent on dealing with the assignment operator is simply staggering. (I would have made that last statement even two years ago, and now we have rvalue refereces.)