&#62; In any case your insight makes me ask - is mainstream OO just a poor outfit for procedural programmers trying to stay relevant?<p>Essentially, yes. C++ was invented because large companies wanted to add the "object-oriented" buzzword to their products. Needless to say, the language is a disaster.<p>Java was an attempt to fix some of the problems with C++ -- primarily, the complete incompatibility of manual memory management and exceptions. Java was a success because any C or C++ developer can sit down with a library reference and begin working, and the resulting programs usually worked better than if the same developer had used C++.<p>Next came C#, which is an incremental improvement over Java in the same way Java is an improvement over C++. It adds a few useful features from more advanced languages (closures, true generics, properties) and restores some C++ features removed from Java (unsigned integers, operator overloading, preprocessing). Again, its most important feature is that it's not very differing -- a C++ or Java developer can be up and running with C# in a matter of hours.