On the first morning of the CodeRage 7 C++ conference, I had the great pleasure to spend an hour live, online with Bjarne Stroustrup, the designer and original implementer of C++. The session was titled, "A C++ Conversation with Bjarne Stroustrup". We recorded the session and I will complete the editing and rendering of the session as fast as possible (CodeRage 7 C++ is still on for two more days from 6am to 5pm each day). We will let everyone (who attended or couldn’t make it) when the replay and pdf of the slides are available. In the meantime, here are a few of the article and website URLs that I used to help guide the conversation and questions during the conversation. A huge thanks and big hug goes out to Bjarne for his CodeRage participation and his years of dedication to the C++ language. Embarcadero also released the C++Builder XE3 64-bit compiler on Monday morning (additional information listed later in this blog post).
About Bjarne Stroustrup
Most of what you need to know about Bjarne can be found on his home page at http://www.stroustrup.com/. There is even a link to an audio file where he reminds everyone how to pronounce his first and last name - http://www.stroustrup.com/pronounciation.wav. Bjarne is also the Distinguished Professor and holder of the College of Engineering Chair in Computer Science, Texas A&M, http://www.cse.tamu.edu/, founder and member of the Parasol Lab: Programming Techniques, Tools and Languages Group, https://parasol.tamu.edu/research.php, and member of the ISO C++ Standards Committee.
What is C++
Bjarne shared a few slides where he tries to answer the question, "What is C++" and "Is there a short, marketing statement for C++?". His first slide listed the following answers to the first question (in no particular order, I added the words in  on this blog post for possible readability improvements):
- An object-oriented programming language
- Template meta-programming!
- Embedded systems programming language
- It’s C!
- A multi-paradigm programming language
- [Has] Class hierarchies
- A hybrid language
- [Lets you create] Classes
- [It's] Too big!
- [Supports] Generic programming
- [Lets you go] Low level!
- [Helps you avoid] Buffer Overflows
Bjarne has created his own marketing-speak phrase for what is C++: [It's] "A light-weight abstraction programming language" with the following key strengths: [Best for building ] software infrastructure and resource-constrained applications.
How to learn good C++ style and Technique
In response to this question, BJarne recommends two places to start:
Read Bjarne’s "Programming: Principles and Practice using C++" textbook which is used as an introduction to programming for new programmers and is also useful for programmers who want to learn "modern C++" - http://www.stroustrup.com/programming.html
Take Bjarne’s four chapter "Tour of C++" (two chapters already posted) which is available on the ISO C++ Foundation website at http://isocpp.org/tour. The four chapters are extracted from the upcoming update release of his book, "C++ Programming Language, 4th Edition", Addison-Wesley, due out next year (2013). The ISO C++ Foundation is a Washington 501(c)(6) not-for-profit organization whose purpose is to support the C++ software developer community and promote the understanding and use of modern Standard C++ on all compilers and platforms.
I also included the following additional links to articles and books with information about C++ style and coding standards:
- Bjarne Stroustrup’s C++ Style and Technique FAQ - http://www.stroustrup.com/bs_faq2.html
- Sutter and Alexandrescu: "C++ coding standards". Addison-Wesley, ISBN 0-321-11358
- Joint Strike Fighter C++ coding standards - http://www.stroustrup.com/JSF-AV-rules.pdf
- Scott Meyers’ "Effective C++" information at http://www.aristeia.com/books.html
Is C++11 suited for Life/Mission/Business critical systems?
For building "Hard" Real-Time Systems, Bjarne said that for these types of critical applications, "every operation has to be predictable". In C++ everything is predictable with exception of the following:
How can you guarantee that code gets to a handler within a defined/short period of time? Bjarne said, "there is no guarantee in the C++ language". Bjarne said, "what is needed is a tool to analyze the throw paths to determine an upper bound for handling time." On Bjarne’s website there is a paper (pdf format) that can help developers who are building life, mission, business critical systems, "Practical and Verifiable C++ Dynamic Cast for Hard Real Time Systems", http://www.stroustrup.com/fdc_jcse.pdf.
Big Props to Bjarne!
That’s the start for the recap of my conversation with Bjarne. A classic statement by Bjarne, one for the ages, occurred when I put up the picture from Bjarne’s home page and Bjarne said he was sitting in his office at Texas A&M looking at the same scene that is in the picture. Thanks again to Bjarne for taking an hour out of his very busy schedule to spend time with all of the attendees at CodeRage 7 C++ conference. Stay tuned to my blog for additional posts with information that I put together in advance of the conversation.
A special Monday, Decemember 10, 2012
December 10th, would have been Ada Lovelace’s 197th birthday. Google had a special Ada Lovelace Google Doodle for the celebration with a search link to pictures and articles about Ada Lovelace - http://www.google.com/search?q=Ada+Lovelace&oi=ddle&ct=ada_lovelaces_197th_birthday-991005-hp.
On December 10, Embarcadero Technologies released the 64-bit Windows compiler version of C++Builder XE3 - http://blogs.embarcadero.com/davidi/2012/12/11/42118
CodeRage 7 C++ Conference, December 10-12, 2012
The CodeRage 7 C++ conference starts next Monday, December 10, 2012 at 6am Pacific Standard Time (14:00 UTC). There are 3 days of C++ sessions that run from 6am to 5pm each day. Some of the C++ sessions you won’t want to miss are included in my blog post on November 21 - http://blogs.embarcadero.com/davidi/2012/11/21/41993.
During the first 25 days of December leading up to Christmas, I will blog about the release of the C++Builder 64-bit compiler for Microsoft Windows and C++Builder XE3 support for building VCL and FireMonkey 2 (FM2) applications.