Example: air traffic controller

A History of C++: 1979− 1991 - Bjarne Stroustrup

A History of C++: 1979 1991 Bjarne StroustrupAT&T Bell LaboratoriesMurray Hill, New Jersey 07974 ABSTRACTThis paper outlines the History of the C++programming language. Theemphasis is on the ideas, constraints, and people that shaped the language, ratherthan the minutiae of language features. Key design decisions relating to languagefeatures are discussed, but the focus is on the overall design goals and practicalconstraints. The evolution of C++is traced from C with Classes to the currentANSI and ISO standards work and the explosion of use, interest, commercialactivity, compilers, tools, environments, and IntroductionC++was designed to provide Simula s facilities for program organization together with C s effi-ciency and flexibility for systems programming.

Stroustrup - 3 - A History of C++ I had used Simula before (during my studies at the University of Aarhus, Denmark), but was very pleasantly surprised by the way the mechanisms of the Simula language became increasingly

Tags:

  1199, History, Mechanisms, 1997, History of c, 1979 1991

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Transcription of A History of C++: 1979− 1991 - Bjarne Stroustrup

1 A History of C++: 1979 1991 Bjarne StroustrupAT&T Bell LaboratoriesMurray Hill, New Jersey 07974 ABSTRACTThis paper outlines the History of the C++programming language. Theemphasis is on the ideas, constraints, and people that shaped the language, ratherthan the minutiae of language features. Key design decisions relating to languagefeatures are discussed, but the focus is on the overall design goals and practicalconstraints. The evolution of C++is traced from C with Classes to the currentANSI and ISO standards work and the explosion of use, interest, commercialactivity, compilers, tools, environments, and IntroductionC++was designed to provide Simula s facilities for program organization together with C s effi-ciency and flexibility for systems programming.

2 It was intended to deliver that to real projectswithin half a year of the idea. It the time, I realized neither the modesty nor the preposterousness of that goal. The goal wasmodest in that it did not involve innovation, and preposterous in both its time scale and its Draco-nian demands on efficiency and flexibility. While a modest amount of innovation did emergeover the years, efficiency and flexibility have been maintained without compromise. While thegoals for C++have been refined, elaborated, and made more explicit over the years, C++as usedtoday directly reflects its original paper is organized in roughly chronological order: 2C with Classes: 1979 1983.

3 This section describes the fundamental design decisions forC++as they were made for C++ s immediate predecessor. 3 From C with Classes to C++: 1982 1985. This section describes how C++evolved fromC with Classes up until the first commercial release and the printing of the book thatdefined C++in October 1985. 4 Release : 1985 1988. This section describes how C++evolved during the early yearsof commercial availability. 5 The Explosion in Interest and Use: 1987 . This section deals with non language factors,such as the growth of a C++tools and library industry. It also tries to estimate the impactof commercial competition on the development of C++.

4 6 Standardization: 1988 . This section describes the way C++continues to evolve under thepressures of heavy use in diverse application areas, and how the C++community handlesthis challenge through formal ISO and ANSI standardization. 7 Retrospective. This section considers how C++met its design goals, how it might havebeen a better language, and how it might become an even more useful effort have been expended on the early years because the design decisions taken early deter-mined the further development of the language. It is also easier to maintain a historicalStroustrup - 2 - A History of C++perspective when one has had many years to observe the consequences of language features are presented to make this paper approachable by a non C++spe-cialist.

5 However, the emphasis in on the people, ideas, and constraints that shaped C++ratherthan on detailed descriptions of those language features or their use. For a description of whatC++is today and how to use it see [ Stroustrup ,1991] .2 C with ClassesC++evolved from an earlier version called C with Classes. The work and experience with C withClasses from 1979 to 1983 determined the shape of C++. PrehistoryThe prehistory of C++ the couple of years before the idea of adding Simula like features to Coccurred to me is important because during this time the criteria and ideals that later shapedC++emerged. I was working on my thesis in the Computing Laboratory of CambridgeUniversity in England.

6 My aim was to study alternatives for the organization of system softwarefor a distributed system. The conceptual framework was provided by the capability based Cam-bridge CAP computer and its experimental and continuously evolving operating system. Thedetails of this work and its outcome [ Stroustrup ,1979a] are of little relevance to C++. What is rel-evant, though, was the focus on composing software out of well delimited modules and that themain experimental tool was a relatively large and detailed simulator I wrote for simulating soft-ware running on a distributed initial version of this simulator was written in Simula and ran on the Cambridge Univer-sity computer center s IBM 360/165 mainframe.

7 It was a pleasure to write that simulator. Thefeatures of Simula were almost ideal for the purpose and I was particularly impressed by the waythe concepts of the language helped me think about the problems in my application. The classconcept allowed me to map my application concepts into the language constructs in a direct waythat made my code more readable than I had seen in any other language. The way Simula classescan act as co routines made the inherent concurrency of my application easy to express. Forexample, an object of classcomputercould trivially be made to work in pseudo parallel withother objects of classcomputer. Class hierarchies were used to express variants of applicationlevel concepts.

8 For example, different types of computers could be expressed as classes derivedfrom classcomputerand different types of inter module communication mechanisms could beexpressed as classes derived from classIPC. The use of class hierarchies was not heavy, though;the use of classes to express concurrency was much more important in the organization of writing and initial debugging I acquired a great respect for the expressiveness ofSimula s type system and the ability of its compiler s ability to catch type errors. The observa-tion was that a type error almost invariably reflected either a silly programming error or a concep-tual flaw in the design.

9 The latter was by far the most significant and a help that I had not experi-enced in the use of more primitive strong type systems. In contrast, I had found Pascal s typesystem worse than useless a strait jacket that caused more problems than it solved by forcingme to warp my designs to suit an implementation oriented artifact. The perceived contrastbetween the rigidity of Pascal and the flexibility of Simula was essential for the development ofC++. Simula s class concept was seen as the key difference and ever since I have seen classes asthe proper primary focus of program Author s note: It is now 1995 4 years since I first completed this paper. Rather than rewriting major sections ofthis paper to for the final book, I have added footnotes where needed to reflect recent events.

10 Most of the themes ofthis paper are explored further in [ Stroustrup ,1994]. So are many issues related to the design and evolution thatcouldn t be included - 3 - A History of C++I had used Simula before (during my studies at the University of Aarhus, Denmark), but wasvery pleasantly surprised by the way the mechanisms of the Simula language became increasinglyhelpful as the size of the program increased. The class and co routine mechanisms of Simula andthe comprehensive type checking mechanisms ensured that problems and errors did not (as I and I guess most people would have expected) grow linearly or more than linearly with the sizeof the program. Instead, the total program acted more like a collection of small (and thereforeeasy to write, comprehend, and debug) programs rather than a single large implementation of Simula, however, did not scale in the same way and as a result thewhole project came close to disaster.


Related search queries