Previous Table of Contents Next


Part III
C++

6  A History of C++
7  A Detailed Introduction to C++
8  C++ Traps and Pitfalls

Chapter 6
A History of C++

by Bjarne Stroustrup

This chapter outlines the history of the C++ programming language from 1979 to 1997. The emphasis is on the ideas, constraints, and people that shaped the language, rather than the minutiae of language features. Key design decisions relating to language features are discussed, but the focus is on the overall design goals and practical constraints. The evolution of C++ is traced from C with Classes to the ISO standards effort and the explosion of use, interest, commercial activity, compilers, tools, environments, and libraries.

This chapter is a revised and extended version of History of C++:1979-1991 (Stroustrup, 1996).

6.1. Introduction to C++

C++ was designed to provide imula’s facilities for program organization together with C’s efficiency and flexibility for systems programming. It was intended to deliver that to real projects within six months of when the idea was conceived. It succeeded.

At the time, I realized neither the modesty nor the preposterousness of that goal. The goal was modest in that it did not involve innovation and preposterous in both its time scale and its Draconian demands on efficiency and flexibility. Although a modest amount of innovation did emerge over the years, efficiency and flexibility have been maintained without compromise. Although the goals for C++ have been refined, elaborated, and made more explicit over the years, C++ as used today directly reflects its original aims.

This chapter is organized in roughly chronological order:

  Section 6.2, “C with Classes: 1979-1983.” This section describes the fundamental design decisions for C++ as they were made for C++’s immediate predecessor.
  Section 6.3, “From C with Classes to C++: 1982-1985.” This section describes how C++ evolved from C with Classes until the first commercial release and the printing of the book that defined C++ in October 1985.
  Section 6.4, “C++ Release 2.0: 1985-1988.” This section describes how C++ evolved during the early years of commercial availability.
  Section 6.5, “Standardization: 1988-1998.” This section describes the way C++ evolved under the pressures of heavy use in diverse application areas and how the C++ community handled this challenge through formal ISO standardization.
  Section 6.6, “The Standard Library.” This section presents the quest for a standard C++ library.
  Section 6.7, “The Explosion in Interest and Use: 1987-the Present.” This section deals with non-language factors, such as the growth of a C++ tools and library industry. It also tries to estimate the impact of commercial competition on the development of C++.
  Section 6.8, “Retrospective.” This section considers how C++ met its design goals, how it might have been a better language, and how it might become an even more useful tool.

Most of this chapter is on the early years because the design decisions made early determined the further development of the language. It is also easier to maintain a historical perspective because I have had many years to observe the consequences of decisions.

Essential language features are presented to make this chapter approachable by a non-C++ specialist. However, the emphasis is on the people, ideas, and constraints that shaped C++ rather than on detailed descriptions of those language features or their use. For a description of what C++ is today and how to use it, see The C++ Programming Language, Third Edition (Stroustrup, 1997). For more details on the design and evolution of C++, see The Design and Evolution of C++ (Stroustrup, 1994).


Previous Table of Contents Next