AsegGasiaBlog

C++ PART 8 History of C++

C++  PART 8 

History of C++

  1. Developed by Bjarne Stroustrup starting in 1979 at Computing Science Research Center of Bell Laboratories, Murray Hill, NJ, USA  

     

    Bjarne Stroustrup

  2. Doctoral work in Computing Laboratory of University of Cambridge, Cambridge, UK  

  3. Study alternatives for organization of system software for distributed systems  

  4. Required development of relatively large and detailed simulator  

  5. Dissertation: 

    1. B. Stroustrup. Communication and Control in Distributed Computer Systems.

    2. PhD thesis, University of Cambridge, Cambridge, UK, 1979.  

  6. In 1979, joined Bell Laboratories after having finished doctorate  

  7. Work started with attempt to analyze UNIX kernel to determine to what extent it could be distributed over network of computers connected by LAN  

  8. Needed way to model module structure of system and pattern of communication between modules  

  9. No suitable tools available.

Timeline for C with Classes

May 1979    Work on C with Classes starts

Oct 1979     Initial version of Cpre, preprocessor that added Simula-like classes to C; language accepted by preprocessor later started being referred to as C with Classes

Mar 1980     Cpre supported one real project and several experiments (used on about 16 systems)

Apr 1980     First internal Bell Labs paper on C with Classes published (later to appear in ACM SIGPLAN Notices in Jan. 1982)

B. Stroustrup. Classes: An abstract data type facility for the C language.

Bell Laboratories Computer Science Technical Report CSTR-84, Apr. 1980.

1980     Initial 1980 implementation had following features:          

  • Classes  

  • Derived classes  

  • Public/private access control  

  • Constructors and destructors  

  • Call and return functions (call function implicitly called before every call of every member function; return function implicitly called after every return from every member function; can be used for synchronization)  

  • Friend classes  

  • Type checking and conversion of function arguments 

1981     In 1981, Added:  

  • Inline functions  

  • Default arguments  

  • Overloading of assignment operator 

Jan 1982     First external paper on C with Classes published 

B. Stroustrup. Classes: An abstract data type facility for the C language.

ACM SIGPLAN Notices, 17(1):42–51, Jan. 1982. 

  • Started work on Cfront compiler front-end for C84; 

  • Initially written in C with Classes and then transcribed to C84; 

  • Traditional compiler front-end performing complete check of syntax and semantics of language, building internal representation of input, analyzing and rearranging representation, and finally producing output for some code generator; 

  • Generated C code as output; 

  • Difficult to bootstrap on machine without C84 compiler; 

  • Cfront software included special “half-processed” version of C code resulting from compiling Cfront, which could be compiled with native C compiler and resulting executable then used to compile Cfront

Feb 1983    More detailed paper on C with Classes published 

B. Stroustrup. Adding classes to the C language: An exercise in language evolution. 

Software: Practice and Experience, 13(2):139–161, Feb. 1983.  

  • C with Classes proved very successful; generated considerable interest 

  • First real application of C with Classes was network simulators 

  • Started to work on cleaned up and extended successor to C with Classes, initially called C84 and later renamed C++

 

Dec 1983    C84 (C with Classes) renamed C++;

  Name used in following paper prepared in Dec. 1983 

B. Stroustrup. Data abstraction in C. 

Bell Labs Technical Journal, 63(8):1701–1732, Oct. 1984. (name C++ suggested by Rick Mascitti) 

Virtual functions added 

Note: 

Going from C with Classes to C84 added: virtual functions, function name and operator overloading, references, constants (const), user-controlled free-store memory control, improved type checking 

Jan 1984    First C++ manual 

B. Stroustrup. The C++ reference manual. AT&T Bell Labs Computer Science Technical Report No. 108, Jan. 1984. 

Sep 1984    Paper describing operator overloading published

B. Stroustrup. Operator overloading in C++. In Proc. IFIP WG2.4 Conference on System Implementation Languages: Experience & Assessment, Sept. 1984.

Stream I/O library first implemented and later presented in 

B. Stroustrup. An extensible I/O facility for C++. In Proc. of Summer 1985 USENIX Conference, pages 57–70, June 1985.

Feb 1985    Cfront Release E (first external release); “E” for “Educational”; available to universities 

Oct 1985     Cfront Release 1.0 (first commercial release) 

Oct 1985     First edition of C++PL written 

B. Stroustrup. The C++ Programming Language. Addison Wesley, 1986.(Cfront Release 1.0 corresponded to language as defined in this book)

Oct 1985    Tutorial paper on C++ B. Stroustrup. A C++ tutorial. In Proceedings of the ACM annual conference on the range of computing: mid-80’s perspective, pages 56–64, Oct. 1985. 

Jun 1986     Cfront Release 1.1; mainly bug fix release 

Aug 1986    First exposition of set of techniques for which C++ was aiming to provide support (rather than what features are already implemented and in use) 

B. Stroustrup. What is object-oriented programming? In Proc. of 14th Association of Simula Users Conference, Stockholm, Sweden, Aug. 1986.

Sep 1986     First Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA) conference (start of OO hype centered on Smalltalk) 

Nov 1986    First commercial Cfront PC port (Cfront 1.1, Glockenspiel [i n Ireland]) Feb 1987    Cfront Release 1.2; primarily bug fixes but also added:  pointers to members  protected members 

Nov 1987    First conference devoted to C++: USENIX C++ conference (Santa Fe, NM, USA) 

Dec 1987    First GNU C++ release (1.13) 

Jan 1988    First Oregon Software (a.k.a. TauMetric) C++ release 

Jun 1988    First Zortech C++ release 

Oct 1988    First presented templates at USENIX C++ conference (Denver, CO, USA) in paper: 

B. Stroustrup. Parameterized types for C++. In Proc. of USENIX C++ Conference, pages 1–18, Denver, CO, USA, Oct. 1988.

Oct 1988    First USENIX C++ implementers workshop (Estes Park, CO, USA) 

Jan 1989    First C++ journal “The C++ Report” (from SIGS publications) started publishing 

Jun 1989    Cfront Release 2.0 major cleanup; new features included: 

  • multiple inheritance  

  • type-safe linkage  

  • better resolution of overloaded functions  

  • recursive definition of assignment and initialization  

  • better facilities for user-defined memory management  

  • abstract classes  

  • static member functions  

  • const member functions 

  • protected member functions (first provided in release 1.2)  

  • overloading of operator ->  

  • pointers to members (first provided in release 1.2) 

1989    Main features of Cfront 2.0 summarized in 

B. Stroustrup. The evolution of C++: 1985–1989. USENIX Computer Systems, 2(3), Summer 1989. 

            First presented in 

B. Stroustrup. The evolution of C++: 1985–1987. In Proc. of USENIX C++ Conference, pages 1–22, Santa Fe, NM, USA, Nov. 1987. 

Nov 1989    Paper describing exceptions published 

A. Koenig and B. Stroustrup. Exception handling for C++. In Proc. of “C++ at Work” Conference, Nov. 1989. 

                    Followed up by 

A. Koenig and B. Stroustrup. Exception handling for C++. In Proc. of USENIX C++ Conference, Apr. 1990.

Dec 1989    ANSI X3J16 organizational meeting (Washington, DC, USA) 

Mar 1990   First ANSI X3J16 technical meeting (Somerset, NJ, USA) 

Apr 1990    Cfront Release 2.1; bug fix release to bring Cfront mostly int o line with ARM 

May 1990    Annotated reference manual (ARM) published 

M. A. Ellis and B. Stroustrup. The Annotated C++ Reference Manual. Addison Wesley, May 1990. (formed basis for ANSI standardization) 

May 1990    First Borland C++ release 

Jul 1990    Templates accepted (Seattle, WA, USA) 

Nov 1990    Exceptions accepted (Palo Alto, CA, USA)

Jun 1991    Second edition of C++PL published 

B. Stroustrup. The C++ Programming Language. Addison Wesley, 2nd edition, June 1991. 

Jun 1991    First ISO WG21 meeting (Lund, Sweden) 

Sep 1991    Cfront Release 3.0; added templates (as specified in ARM) 

Oct 1991    Estimated number of C++ users 400,000 

Feb 1992    First DEC C++ release (including templates and exceptions) 

Mar 1992    Run-time type identification (RTTI) described in 

B. Stroustrup and D. Lenkov. Run-time type identification for C++.

The C++ Report, Mar. 1992. 

                     (RTTI in C++ based on this paper) 

Mar 1992    First Microsoft C++ release (did not support templates or exceptions)

May 1992    First IBM C++ release (including templates and exceptions) 

Mar 1993    RTTI accepted (Portland, OR, USA) 

Jul   1993    Namespaces accepted (Munich, Germany)

        1993    Further work on Cfront Release 4.0 abandoned after failed attempt to add exception support 

Aug 1994    ANSI/ISO Committee Draft registered 

Aug 1994    Standard Template Library (STL) accepted (Waterloo, ON, CA); described in 

A. Stepanov and M. Lee. The standard template library. Technical Report HPL-94-34 (R.1), HP Labs, Aug. 1994. 

Aug 1996    Export accepted (Stockholm, Sweden) 

       1997    Third edition of C++PL published 

B. Stroustrup. The C++ Programming Language. Addison Wesley Longman, Reading, MA, USA, 3rd edition, 1997.

Nov 1997    Final committee vote on complete standard (Morristown, NJ, USA) 

Jul 1998    Microsoft releases VC++ 6.0, first Microsoft compiler to provide close-to-complete set of ISO C++ 

Sep 1998    ISO/IEC 14882:1998 (informally known as C++98) published 

ISO/IEC 14882:1998 — programming languages — C++, Sept. 1998. 

1998            Beman Dawes starts Boost (provides peer-reviewed portable C++ source libraries) 

Feb 2000    Special edition of C++PL published 

B. Stroustrup. The C++ Programming Language. Addison Wesley, Reading, MA, USA, special edition, Feb. 2000.


Apr 2001    Motion passed to request new work item: technical report on libraries (Copenhagen, Denmark); later to become ISO/IEC T R 19768:2007 

Oct 2003    ISO/IEC 14882:2003 (informally known as C++03) published; essentially bug fix release; no changes to language from programmer’s point of view

ISO/IEC 14882:2003 — programming languages — C++, Oct. 2003.

2003           Work on C++0x (now known as C++11) starts

Oct 2004    Estimated number of C++ users 3,270,000

Apr 2005    First votes on features for C++0x (Lillehammer, Norway)

2005            Auto, static_assert, and rvalue references accepted in principle

Apr 2006    First full committee (official) votes on features for C++0x (Berlin, Germany)

Sep 2006    Performance technical report (TR 18015) published:

ISO/IEC TR 18015:2006 — information technology — programming languages, their environments and system software interfaces — technical report on C++ performance, Sept. 2006.

Work spurred by earlier proposal to standardize subset of C+ + for embedded systems called Embedded C++ (or just EC++); EC++ motivated by performance concerns

Apr 2006    Decision to move special mathematical functions to separate ISO standard (Berlin, Germany); deemed too specialized for mos t programmers

Nov 2007    ISO/IEC TR 19768:2007 (informally known as C++TR1) published;

ISO/IEC TR 19768:2007 — information technology — programming languages — technical report on C++ library extensions, Nov. 2007.

Specifies series of library extensions to be considered for adoption later in C++

2009    Another particularly notable book on C++ published

B. Stroustrup. Programming: Principles and Practice Using C++.

Addison Wesley, Upper Saddle River, NJ, USA, 2009.

Aug 2011    ISO/IEC 14882:2011 (informally known as C++11) ratified

ISO/IEC 14882:2011 — information technology — programming languages — C++, Sept. 2011.

2013            Fourth edition of C++PL published

B. Stroustrup. The C++ Programming Language. Addison Wesley, 4th edition, 2013.  

2014            ISO/IEC 14882:2014 (informally known as C++14) ratified

ISO/IEC 14882:2014 — information technology — programming languages — C++, Dec. 2014.

2017            ISO/IEC 14882:2017 (informally known as C++17) ratified 

ISO/IEC 14882:2017 — information technology — programming languages — C++, Dec. 2017.

Note :

  1. Flexibility (can be used for most application areas)

  2. Availability (C compilers available for most platforms) 

  3. Portability (source code relatively portable from one platform to another)  

  4. Simula gave classes 

  5. Algol68 gave operator overloading, references, ability to declare variables anywhere in block 

  6. BCPL gave // comments 

  7. Exceptions influenced by ML 

  8. Templates influenced by generics in Ada and parameterized modules in Clu

  9. C++ very successful programming language 

  10. Not luck or solely because based on C

  11. Efficient, provides low-level access to hardware, but also supports abstraction

  12. Non-proprietary: in 1989, all rights to language transferred to standards bodies (first ANSI and later ISO) from AT&T

  13. Multi-paradigm language, 

  14. Supporting procedural, 

  15. Object-oriented, 

  16. Generic, and functional,

  17. Does not force particular programming style,  

  18. Reasonably portable,  

  19. Has continued to evolve, 

  20. Incorporating new ideas,

  21. Stable: high degree of compatibility with earlier versions of language  

  22. Very strong bias towards providing general-purpose facilities rather than more application-specific ones

 

 

Popular Posts