I know more about C++ than you think. Really.

On the internet, it's no secret that I don't like C++ very much. Every so often, I will inevitably get into an argument with someone who likes the language. Given my tendency for hyperbole and metaphor in such discussions, equally inevitably the accusation will be made that the reason I don't like C++ is because I don't understand it.

Nothing could be further from the truth.

Let me first outline my credentials in C++. First of all, C++ was my first real programming language. I learned it from Herbert Schildt's C++ From The Ground Up, an excellent book, which detailed all of C++'s linguistic constructs divorced from C. It explained how to do things the right way, rather than the C way, in C++.

After learning from this book, I had a solid 4 years of amateur programming experience with it. Most of the code I wrote, sadly, was rather platform-specific (as most C++ code was at the time) and none was ever made publicly available. I do not own the copyright to a great deal of it.

I can tell you about a few programs I wrote, though. I wrote a simple multithreading server using a message-based protocol generated entirely from declarative preprocessor macros. I wrote a domain-specific graph drawing program for the macintosh. I wrote several XTNDs (extensions for HyperTalk and Macromedia Director) which maintained state and logic independent from its graphical representation. I also wrote a run-time-dispatch based pseudo-NLP parser library based on extensive template dispatching.

Many of these systems, though small, used deep, extensive knowledge of hard C++ hackery to achieve. (I even spotted bugs in a C++ compiler vendor's generation of vtables with a few versions of that last project.) I was very keen on getting the most out of the language, since I had worked so hard to learn it.

I have even somewhat recently been employed in two environments where understanding C++ code was important to my job. I didn't write very much in either, but I sure had to read a lot.

Finally, not only did I learn C++ extensively, but I taught it. As a C++ evangelist at my high school when my peers were learning various dialects of BASIC, I taught the better part of a term-long CS course in C++. Additionally, I taught C++ seminars for a computer training company at a summer camp, to people whose skill levels ranged from fifth grader to professional software engineer. At this point, I have reason to believe that my grasp of C++ at the time was better than most college graduates have today. (In fact, I have significant anecdotal evidence that it's stronger than most CS professors have today... but I digress.)

I also first encountered object oriented programming in C++. Despite my quibbles about its definition, I am very much an object-oriented programmer and C++ influenced my development in this way.

My dislike of C++ is not based upon an ignorance of the alternatives, either. I know a smattering of Lisp, perl, python, scheme, C, hypertalk, smalltalk, bourne shell, C shell, and a few other languages that do not bear mentioning.

Last modified: Sat Jun 14 00:50:47 CDT 2003