Tired of the lack of expressiveness of mainstream programming languages of the day and of the slowness of experimental languages, AT&T researcher Bjarne Stroustrup built the first version of C++ in 1983. C++ combines the expressive power of OOP (object-oriented programming) with the speed, compactness, and flexibility of C, its systems programming language predecessor, which was invented at AT&T ten years earlier. C++ matches C in efficiency and adds facilities for building larger, more easily maintained, and more reliable systems.
Stroustrup's creation, originally intended to improve the working lives of his colleagues, rapidly became one of the most influential programming languages in industry and academia worldwide. Today, upwards of a million programmers use C++ to write software for machines ranging from PCs to supercomputers. If you have used a computer, you have almost certainly used a program written in C++. Most PC and Internet users do so daily. C++ is even used for software in gadgets such as cameras and elevators, which are not usually associated with computers and programming.
At AT&T, C++ has become embedded in transmission, switching, and operations systems. C++ is also used in scientific programming, data analysis, simulation, and other mainstays of telecommunications research. Constant research and refinement have kept C++ in the front line of systems development to this day.
In The Design and Evolution of C++ (1994), Bjarne Stroustrup describes some rules that he uses for the design of C++:
- C++ is designed to be a statically typed, general-purpose language that is as efficient and portable as C
- C++ is designed to directly and comprehensively support multiple programming styles (procedural programming, data abstraction, object-oriented programming, and generic programming)
- C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly
- C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C
- C++ avoids features that are platform specific or not general purpose
- C++ does not incur overhead for features that are not used (the "zero-overhead principle")
- C++ is designed to function without a sophisticated programming environment