C++
The language with probably the largest body of deployed code in this roster, absent from it until
now. Like c, its identity is a document: ISO/IEC 14882, currently C++23 — “the standard is
called C++23 because 2023 is the year the technical work was completed,” while the ISO publication
suffix reads :2024 for administrative reasons. ISO holds the copyright on every balloted version;
working drafts live on GitHub and are explicitly “may frequently be in an inconsistent in-progress
state.” (isocpp.org, the committee’s own site — T1 for facts about the standard.)
The revisions since 2011 land on a three-year cadence: C++11, C++14, C++17, C++20, C++23.
What the committee is, and what that does to the language
Stroustrup’s HOPL IV paper describes the process from inside. Up to 250 people turn up to week-long meetings three times a year, with more participating electronically, and the standard “evolves through a consensus process. Inevitably, there is competition among proposals and clashes (usually polite ones) over direction, design philosophies, and principles.”
His summary of the resulting pressure is the sharpest statement of the design problem this spoke has collected — three contradictory demands, held for decades:
• Make the language simpler! • Add these two essential features now!! • Don’t break (any of) my code!!!
Note which one always wins. That is a governance fact as much as a technical one, and it belongs next to language-governance: a committee with no owner cannot break compatibility, because there is no one who could absorb the cost of doing it.
Adoption
From 2006 to 2020 the C++ developer community grew from about 3 million to about 4.5 million (cpp-hopl) — through a period when “quite a few well-financed and professionally marketed languages fought for dominance,” and without commercial backing of its own. Growth, not merely survival, is the fact that needs explaining, and Stroustrup’s answer is stability: people with significant applications want “comprehensive support, stability (compatibility), and familiarity,” and “invariably confuse familiarity with simplicity and prefer familiarity over simplicity if given a choice.”
Against the rest of the roster
- c takes the same document-as-identity route and answers the simplicity demand by declining the features. C++ answered it by adding them and keeping the old ones, which is why the language contains several eras at once.
- rust targets the same deployment space — no GC, no runtime — but is free to remove things, and its safety guarantee is the argument for paying migration cost. The zero-overhead principle Stroustrup cites (a feature you do not use should cost nothing) is the value both languages claim.
- go is the direct opposite of the C++ committee’s outcome: every design move removes a choice. C++‘s process cannot remove choices, only add.
Not read here: the standard text itself (it is sold, not published), the library’s shape, and the epochs/profiles debate about C++‘s own safety story. That last one is the live question.