C++ Considered Harmful
<p>My blogging will be sporadic to nonexistent for a while, as my friend Rob Landley and I are concentrating heavily on writing a paper together.   The working (and probably final) title is &#8220;Why C++ is Not Our Favorite Programming Language&#8221;.  It begins:</p>
<blockquote><p>
C++ is an overcomplexity generator.  It was designed to solve what<br />
turned out to be the wrong problems; as a result, it lives in an<br />
unhappy valley between two utility peaks in language-design space,<br />
with neither the austere elegance of C nor the expressiveness and<br />
capability of modern interpreted languages. The layers, patches, and<br />
added features designed to lift it out of that valley have failed to<br />
do so, resulting in a language that is bloated, obfuscated, unwieldy,<br />
rigid, and brittle.  Programs written in C++ tend to inherit all<br />
these qualities.</p>
<p>In the remainder of this paper we will develop this charge into<br />
a detailed critique of C++ and the style it encourages.  While we<br />
do not intend to insult the designers of C++, we will not make<br />
excuses for them either. They repeatedly made design choices that<br />
were well-intentioned, understandable in context, and wrong.  We<br />
think it is long past time for the rest of us to stop suffering<br />
for those mistakes.
</p></blockquote>
<p>Yes, we are attempting to harpoon the Great White Whale of modern programming languages.  I&#8217;m announcing this here to give my commenters the opportunity to contribute.  If you know of a particularly good critical analysis of C++, or technically detailed horror story around it, please cite.  Superb apologetics for the language would also be interesting.</p>
<p>The paper is developing primarily from a software-engineering perspective rather than out of formal language theory. I&#8217;m particularly looking for empirical studies on the importance of manual memory management as a defect attractor (I have the Prechelt paper from the year 2000).  I&#8217;m also interested in any empirical studies comparing the productivity impact of nominative vs. structural vs. duck typing.</p>
<p>After about 3 days of work our draft is over 600 lines of clean narrative text in asciidoc.  It&#8217;s going well.</p>
