This blog – The Unreasonable Effectiveness of C – is really very good, and makes a lot of points that are very difficult to argue with.
Though, lately, I have (re-)discovered the joys of C++ – even if I do write code in that language like a C programmer.
In the last six months I have written a lot of code designed to process a lot of data. I started off with Groovy – my data was XML and Groovy comes with tools that are specifically designed to make a programmer’s life a lot easier when handling XML.
But, in the end, Groovy just was not up to the task – because for my needs: processing 200 GB of XML, Groovy (or, rather, the Java VM on which it runs) is just not fast or flexible enough.
My response to that was to go “route 1” and reach for C. I know and knew I could build what I wanted in C and that it would be as fast as I could reasonably hope to get it (going down to Assembly was just not a serious option).
However, the code I am actually using is in C++. I found that the abstractions offered by the STL were worth the price in terms of speed of execution and code that is somewhat opaque to the GDB debugger.
It’s a compromise, of course, but I suspect if I had tried to write the equivalent of the STL
set classes in C, I’d still be debugging my implementation many weeks later – after all I found that my C++ red-black tree code was actually broken despite using it (successfully) for a number of years.
Real programmers have to make these compromises – and C++ struck the right note between language expressiveness and language power for me.