A Blast From the Past: C++ Abuse
Oct 4, 2011 · 3 minute read · CommentsprogrammingC++C
Lately I’ve been seeing a lot of mention of the online book “Learn C the Hard Way”, and how it quickly introduces and uses Valgrind. That brought back memories of the 1990s when I programmed in C, and then C++, and SIGSEGV
and core
were part of my daily life, as well as dbx
and gdb
.
My most important tool, however, was Purify of Pure Software. We were such good customers of Pure Software, using also Quantify, Pure Link, and Pure Coverage, that we got sent mugs, of which I still have one and drink water from daily!
In the spirit of reminiscence about C and C++ programming, I hereby share my first code excerpt of this blog.
I wrote up with this monstrosity (in less obfuscated form, admittedly) while learning C++ coming from a background of C (in conjunction with assembly language) and inspecting the output of Cfront
(http://en.wikipedia.org/wiki/Cfront)-based compilers we used (especially when the compilers failed with internal fatal errors or generated incorrect code, which sometimes happened).
If you are a seasoned C++ programmer, you can determine what this code does and why. Also, if you are a truly passionate C++ programmer, you may have wisdom about on which platforms this code actually works, and on which platforms it does not, etc. I welcome all clarifications and refutations!
If this code doesn’t make any sense to you, no matter: we are living in the age of Java, Python, Perl, Ruby, JavaScript, Clojure, Haskell, OCaml, Erlang, PHP, C#, and a hundred other languages in which you never have to deal with this kind of code.
I have to admit, though, that there was something cool about knowing how to do this kind of tinkering, just as it was useful to me once to know how to mess around with bit fields, little-endian versus big-endian, etc. Surely, if the world collapsed, Duff’s device would still be a thing of beauty.
Postscript
According to the book’s section on Valgrind, “As of Sep 4, 2011 there’s this bug in Valgrind on OSX Lion. It might take a little while for them to fix it, so be patient.”
So, if I were a beginner to C and wanted to work through this book, and used Mac OS, I would be stuck now! That reminds me of what life was like on a daily basis back in the day when I had to develop applications that were to run on ULTRIX, SunOS, Solaris, HP-UX, AIX, and VMS. Something somewhere was always broken at any given time and needed a workaround!