T1#research

C++ Ships Commercially — Bjarne Stroustrup

Bjarne Stroustrup, designer of C++ (2013)
SourceICPCNews / photographer Victor Zavyalov (Wikimedia Commons) · CC BY 2.0 · View on Commons ↗

Metadata

Date
Decade
1980s
Tier
T1
Sources
04
Connections
08
Tags
#research

C++ is the programming language Bjarne Stroustrup designed at AT&T Bell Labs. Work began in 1979, under the name C with Classes. It was named C++ in 1983, and in October 1985 the first commercial implementation was released at the same time as Stroustrup's book The C++ Programming Language. The first ISO standard was C++98, in 1998.

That gives three answers to "when was C++ created?" This article follows what happened between them, drawing on Stroustrup's own A History of C++: 1979-1991, written for ACM's HOPL-II conference in 1993, and the FAQ on his website.

WhenWhat happened
April 1979Work begins at Bell Labs
October 1979Cpre, a preprocessor adding Simula-like classes to C, is running
March 1980Cpre supports one real project and several experiments, in use on 16 systems
Spring 1982 – summer 1983Stroustrup designs and implements the Cfront compiler
August 1983The first version of C++ is used inside AT&T
December 1983The name C++ first appears in print
October 1985First commercial implementation (Cfront 1.0) and The C++ Programming Language, 1st edition
June 1989Cfront 2.0 adds multiple inheritance
1998First ISO standard, C++98

Prehistory: Simula and BCPL at Cambridge

The criteria that shaped C++ took form while Stroustrup was a PhD student at the University of Cambridge. To study how system software for a distributed system might be organised, he wrote a large simulator — first in Simula, on the university's IBM 360/165.

Simula's classes let him map the concepts of his application directly onto the language, and its type checking caught conceptual flaws in the design as well as slips. He was surprised to find the language helping more as the program grew. The implementation, however, did not scale. Separate compilation and linking were painfully slow, run-time performance was hopeless, and measurements showed more than 80% of the time going to the garbage collector — even though the simulated system never produced any garbage.

To save the project he rewrote the simulator in BCPL, which, he says, "makes C look like a very high level language" and offered no type checking or run-time support. It was horrible to write and debug, but it ran fast and gave him his results. Leaving Cambridge, he swore never again to attack a problem with tools that unsuitable.

What he wanted from a good tool came down to three things.

RequirementWhat it meant
Simula's program organisationClasses, class hierarchies, support for concurrency, static type checking based on classes
BCPL's speed and simplicityPrograms as fast as BCPL's, with easy linking of separately compiled units
PortabilityNo complicated run-time support to port, and minimal integration with the host operating system

1979: C with Classes

By Stroustrup's account, the work that became C++ started in April 1979 at the Computing Science Research Center of Bell Labs in Murray Hill, New Jersey. The project was to analyse how far the UNIX kernel could be distributed over computers on a local network, which needed a way to express the module structure of a complex system and the communication between its modules — exactly the kind of problem he had vowed not to attack without proper tools.

By October 1979 he had Cpre running, a preprocessor that added Simula-like classes to C; the language it accepted was C with Classes. By March 1980 it supported one real project and several experiments and was in use on 16 systems. One decision proved crucial. Although concurrency was a primary aim, the language had no concurrency primitives; instead, inheritance and class member functions made it possible to write concurrency as a library, because there was no single dominant model of concurrency. That choice is what made C with Classes a general-purpose language rather than a C variant for a particular application area.

1982–83: Cfront and the name

In 1982 Stroustrup judged C with Classes a "medium success": useful enough to pay for itself and its developer, but not attractive enough to pay for a support organisation. He saw two ways out — stop supporting it, or build a better language with enough users to fund one, which he estimated at a minimum of 5,000 industrial users. He chose the second.

Between the spring of 1982 and the summer of 1983 he designed and implemented Cfront, a traditional compiler front end that fully checked syntax and semantics, built an internal representation, and produced output for a code generator. The first user outside the research center, Jim Coplien at Bell Labs in Naperville, Illinois, received a copy in July 1983.

The new language was at first still called C with Classes, then, after a polite request from management, C84. People had taken to calling C with Classes "new C" and then just C, leaving the original to be called "plain C" or "old C". C84 lasted only a few months: it was ugly, and confusion would remain if people dropped the 84. Stroustrup asked for ideas and chose C++, suggested by Rick Mascitti — "short, had nice interpretations, and wasn't of the form 'adjective C'". ++ is C's increment operator, marking an evolution of C. The name was coined in the summer of 1983 and first used when it was edited into the final copy of a paper in December 1983.

October 1985: the first commercial release

According to Stroustrup's FAQ, the first version of C++ was in use inside AT&T in August 1983, and "the first commercial implementation was released October 1985" together with the first edition of The C++ Programming Language. In Cfront terms this was Release 1.0, and the language was the one that book defined.

By Stroustrup's reckoning, few outside influences left traces in C++ as released in 1985: Simula gave classes; Algol 68 gave operator overloading, references and declarations anywhere in a block; BCPL gave // comments. Modula-2, Ada, Smalltalk, Mesa and Clu were considered as sources of ideas but left nothing noticeable. Compatibility with C was a major controversy, settled in the end as an agreement that there would be no gratuitous incompatibilities with ANSI C.

The feature with the greatest impact was the virtual function, borrowed from Simula. C with Classes had left it out: Stroustrup doubted he could teach people to use virtual functions, or convince them that a virtual function is as efficient in time and space as an ordinary function.

Later releases and standardisation

Cfront kept evolving. Releases 1.1 (June 1986) and 1.2 (February 1987) were mainly bug fixes; 2.0 (June 1989) added multiple inheritance; 3.0 (September 1991) added templates. The Annotated C++ Reference Manual (1990), written with Margaret Ellis, became the starting point for formal standardisation, and Stroustrup handed control of the reference manual to the ANSI C++ committee in early 1990. The first ISO standard was C++98.

For the ideas behind it, see object-oriented programming and type systems in the glossary; for its contemporaries, the programming-languages timeline. Simula's classes came from Ole-Johan Dahl and Kristen Nygaard; C came from Dennis Ritchie.

Questions this page answers

What year was C++ created?
Three dates compete. Bjarne Stroustrup began the work at AT&T Bell Labs in 1979, under the name C with Classes; it was named C++ in 1983; and the first commercial implementation was released in October 1985.
Where does the name C++ come from?
Rick Mascitti suggested it; it was coined in the summer of 1983 and first used when it was edited into the final copy of a paper that December. ++ is C's increment operator, signalling evolutionary change from C. Stroustrup says he picked it because it was short, had nice interpretations, and was not of the form adjective-C.
Why was C++ created?
Stroustrup says he wanted to write efficient systems programs in the styles Simula 67 encouraged. In his Cambridge PhD work, Simula's classes had helped his design but its implementation was too slow, while BCPL was fast but painful. Seeking a tool with both strengths, he added better type checking, data abstraction and object-oriented programming to C.
When was C++ first standardised?
The first ISO standard was C++98 (ISO/IEC 14882), in 1998. Before that, Stroustrup had handed control of the reference manual to the ANSI C++ committee in early 1990.

Sources

  1. PrimaryBjarne Stroustrup's FAQ — dates of C with Classes, the C++ name, and the first commercial release

    The 1979 start, internal use in August 1983, the name's origin and first use, the October 1985 commercial release, and C++98

    Accessed 2026-10-05

  2. PrimaryStroustrup, B. (1993). A History of C++: 1979-1991. ACM HOPL-II

    The Cambridge experience with Simula and BCPL, the April 1979 start and October Cpre, Cfront, the C84 name, Cfront's release history, and the handover to ANSI

    Accessed 2026-10-05

  3. TertiaryC++ — Wikipedia

    Accessed 2026-08-08

Last updated:

Share