Home > C++ > On The Origin Of Features

On The Origin Of Features

Thanks to an angel on the blog staff at the ISO C++ web site, my last C++ post garnered quite a few hits that were sourced from that site. Thus, I’m following it up with another post based on the content of Bjarne Stroustrup’s brilliant and intimate book, “The Design And Evolution Of C++“.

The drawing below was generated from a larger, historical languages chart provided by Bjarne in D&E. It reminds me of a couple of insightful quotes:

“Complex systems will evolve from simple systems much more rapidly if there are stable intermediate forms than if there are not.” — Simon, H. 1982. The Sciences of the Artificial.

“A complex system that works is invariably found to have evolved from a simple system that worked… A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over, beginning with a working simple system.” — Gall, J. 1986. Systemantics: How Systems Really Work and How They Fail.


Cpp Lineage

A we can see from the figure, “Simula67” and “C” were the ultimate ancestral parents of the C++ programming language. Actually, as detailed in my last post, “frustration” and “unwavering conviction” were the true parents of creation, but they’re not languages so they don’t show up on the chart. πŸ™‚

To complement the language-lineage figure, I compiled this table of early C++ features and their origins from D&E:

Feature Origin

Finally, if you were wondering what Mr. Stroustrup’s personal feature-filtering criteria were (and still are 30+ years later!), here is the list:

Feature Rejection

If you consider yourself a dedicated C++ programmer who has never read D&E and my latest 2 posts haven’t convinced you to buy the book, then, well, you might not be a dedicated C++ programmer.

  1. October 5, 2014 at 11:24 am

    Gall’s book is a mandatory read.
    Page 3 of http://www.slideshare.net/galleman/fault-tolerant-systems was used when we “invented” a triple redundant fault tolerant process control computer in the 80’s

    • October 5, 2014 at 11:39 am

      Yes indeed, it’s simply brilliant. I’ve also got the later version “The Systems Bible”. The gall of that man! πŸ™‚

      Just made a quick pass through your paper. Nice job.

      • October 5, 2014 at 11:55 am

        Is that the 3rd edition?

  2. October 5, 2014 at 11:57 am

    Yes. Paperback, red border

    • October 5, 2014 at 12:10 pm

      In have both. Systematics and Bible. Thanks

  3. October 7, 2014 at 8:09 am

    D&E … the best C++ book.

  4. October 10, 2014 at 9:42 pm

    This is wrong in so many ways. A is for APL, B is for Basic (oversimplified introductory language because rigorous logical expression is too much to ask of beginners), C is for C because it came after B. C is like PHP, a bad copy.
    C++ is two steps back after two steps back after decades of lost progress and forgotten advanced programming language theory that was already a reality that has taken language development. We teach people functions when we should be teaching them APL as a way of expressing complex logical operations as executable code.
    The nirvana of stateless code are functional expressions written in languages like J where the values are implied and don’t need to be explicitly declared even when referenced directly.

    • October 18, 2014 at 2:18 am

      It’s not “wrong”. The figure simply shows the progressive growth of C++ and which of its features came from which other languages.

      • June 9, 2016 at 11:09 am

        I’m a bit of a zealot and have trouble communicating my ideas clearly.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: