Stroustrup’s C++ Design Goals in 1986

From “An Overview of C++,” by Bjarne Stroustrup, SIGPLAN Notices, 1986-10.

Section 6.  What is Missing?

C++ was designed under severe constraints of compatibility, internal consistency, and efficiency:  no feature was included that

  1. would cause a serious incompatibility with C at the source or linker levels.
  2. would cause run-time or space overheads for a program that did not use it.
  3. would increase run-time or space requirements for a C program.
  4. would significantly increase the compile time compared with C.
  5. could only be implemented by making requirements of the programming environment (linker, loader, etc.) that could not be simply and efficiently implemented in a traditional C programming environment.

Features that might have been provided but weren’t because of these criteria include garbage collection, parameterized classes, exceptions, multiple inheritance, support for concurrency, and integration of the language with a programming environment.  Not all of these possible extensions would actually be appropriate for C++, and unless great constraint is exercised when selecting and designing features for a language, a large, unwieldy, and inefficient mess will result.  The severe constraints on the design of C++ have probably been beneficial and will continue to guide the evolution of C++.