Origins and People
In the early 1980s at Bell Laboratories the Danish computer scientist Bjarne Stroustrup decided take the C language and add classes. The result was the birth of C++, and this higher-level, object-oriented language became an instant hit.
Microsoft and Intel and other software organisations soon created their own C++ compilers. Such high profile support ensured a rapid rise in popularity. Mass adoption of C++ by programmers in the 1990s provided huge momentum, and it soon became a major force in the operating system and application development arena.Bjarne Stroustrup also wrote the classic The C++ Programming Language textbook. New revisions of the book reflect the language's evolution, with the third edition describing features such as virtual functions, the standard template library, exceptions and namespaces.
As C++ is a superset of C, the compiler will also compile C programs. In fact, a C++ compiler tends to be superior when it comes to reporting syntax errors and possible coding issues. With its C foundation the cross-platform portability of C++ is equally impressive. And the resulting binary programs are just as efficient on devices with low-powered CPUs and restricted memory.
The ability to encapsulate complex functionality in a collection of flexible object-oriented classes resulted in a plethora of GUI and domain-specific libraries. Developing large, GUI-centric applications in C++ is far easier than with C.
In the years before alternatives like Java and the birth of the web, C++ gained a reputation as the language of choice for coding power, flexibility and control - features still highly valued by today's C++ developer.
With its comprehensive specification and expressive syntax C++ demands a significant learning curve. Competent C++ developers must be just as comfortable with its low-level capabilities as they are with classes. A design-centric mentality is particularly important when working with object-oriented languages. It's a shift that programmers sometimes find difficult.
The scale of some C++ developments can be daunting, even for experienced programmers. Navigating around hundreds or thousands of libraries and source code files isn't easy. Ensuring all this code is subjected to the rigorous testing necessary to achieve reliable, glitch-free operations is an even bigger challenge.
Despite its class extensions the C++ syntax still has a low-level feel, especially when compared with Java, Python, PHP and the like. This can make life difficult for less-experienced developers trying to maintain existing libraries and applications.
Linux, Microsoft Windows, Apple OS X and Google Android operating systems contain millions of lines of C++ code. And, as many of their respective applications - such as Microsoft Office and Libre Office - are also heavily reliant on C++ code, it's unlikely to be superseded any time soon.
C++ first became an ANSI/ISO standard in 1998. The ISO committee's latest 2011 work, C++11, is a major enhancement, with improvements for multithreading and generic programming. Plans to create new C++14 and C++17 standards will ensure C++ remain a highly relevant language in the coming decade.