Bjarne Stroustrup first started developing the the C++ language in 1979 at Bell Labs. Back then, it was called "C with Classes," and it was created as part of an experiment in distributed computing. In the 30-plus years since, the language has taken off, becoming one of the most popular programming languages in use today.
Stroustrup, now a professor of computer science at Texas A&M University, talked with InfoWorld editor at large Paul Krill questions about the past, present, and future of C++, which was recently upgraded via the C++ 11 release.
[ Read InfoWorld's recent interviews with developers of the Ruby, Dart, and Kotlin languages. | Subscribe to InfoWorld's Developer World newsletter for the latest happenings in software development. ]
InfoWorld: What was your intent in developing C++?
Stroustrup: To build a general tool for managing the complexity of performance-sensitive applications. My immediate need was to write some simulations and some device-level software for an experiment in distributed computing at Bell Labs. Much of my inspiration came from the use of Simula and BCPL.
InfoWorld: What's the status of the C++ 11 upgrade and what was your role in developing it?
Stroustrup: C++ is specified by its ISO C++ standards committee. I'm a founding member of that committee and active as the chair of the Evolutions Working Group that evaluates proposals for new language features. I also try to help the committee set directions. C++11 became an international standard late last year, and the C++ compiler purveyors are now busy implementing it. Many features and the entire new standard library are already shipping.
InfoWorld: What do you see as the most important features of C++11? Accommodations for multithreading, perhaps?
Stroustrup: Certainly, standard and type-safe support for thread-level and lock-free concurrency is a major improvement on the various non-standard concurrency libraries that have been available for C++ for decades. It will be a boon to multiplatform development. The language feature changes are relatively minor, but there are quite a few of them; which of them are the most helpful will depend on what a programmer is doing.
I like the way move semantics will simplify the way we return large data structures from functions and improve the performance of standard-library types, such as string and vector. People in high-performance areas will appreciate the massive increase in the power of constant expressions (constexpr). Users of the standard library (and some GUI libraries) will probably find lambda expressions the most prominent feature. Everybody will use smaller new features, such as auto (deduce a variables type from its initializer) and the range-for loop, to simplify code.
InfoWorld: What future directions do you anticipate for C++?