I've been a software engineer for a pretty long time. I'm not completely grey and insensible yet, but that's because I started young. My first professional gig, when I was a high-school student in the late 70's, involved programming in FORTRAN. The C language had very little traction at that point outside of universities.
That changed. C practitioners struggled and fought their way into the mainstream, until eventually C had displaced most other languages based on pure popularity. I was also a C convert because I could get more done in C than in nearly any other language. It was parsimonious and straightforward, and you could save a lot of keystrokes by typing "{" (open-curly-bracket) instead of the word "begin".
Sometime in the late 1980's there was a market struggle between C++ and Objective-C as to which would be the logical follow-on to the reigning C language. Both were object-oriented and had some strengths and weaknesses relative to each other, so it was kind of an interesting debate. I was a bit of an Objective-C partisan but I was open to being convinced. But never mind. C++ won not because of superior design features but because of something like nepotism. C was a standard, and C++ was the new standard designed by a duly anointed standards body. Thus the heir apparent assumed the throne.
But C++ was a benevolent dictator. You could still write in "standard" C if you wanted to, and as long as you eschewed the magic keywords like "class" and "new" the C++ compilers would let you do it. So, for another decade or two, I continued to write plain old C code. C++ held very little appeal for me.
To be clear, I am an object-oriented programmer. I like object-oriented techniques and use them routinely -- in C. Anyone who thinks you need object-oriented language constructs to write object-oriented code is very confused or -- more likely -- just young. I was writing object-oriented code in FORTRAN before some of these C++ programmers were even born.
For various reasons, but mostly because (a) I need to develop an SDK that will appeal to today's programmers, and (b) I'm interested in expanding my own skill set, I have been writing a lot of C++ lately. I am not, by any means, a C++ expert. There's a very great deal of knowledge required to make that claim, and I am nowhere near that level. But I have a good background in many languages and have designed many of my own.
So hopefully it's clear I'm not an idiot, and at the very least I can give good reasons why this old engineer hates C++.
- jack*
UPDATE: part 1
Comments