0% found this document useful (0 votes)
275 views

001 C++ Programming Overview PDF

C++ was created in 1979 by Bjarne Stroustrup at Bell Labs as an extension of C to support object-oriented programming. It has since evolved through several standards including C++11, C++14, and C++17. C++ combines low-level systems programming capabilities of C with high-level abstraction mechanisms like classes, templates, and exceptions. It is widely used for desktop applications, games, operating systems, and more.

Uploaded by

施玟宇
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
275 views

001 C++ Programming Overview PDF

C++ was created in 1979 by Bjarne Stroustrup at Bell Labs as an extension of C to support object-oriented programming. It has since evolved through several standards including C++11, C++14, and C++17. C++ combines low-level systems programming capabilities of C with high-level abstraction mechanisms like classes, templates, and exceptions. It is widely used for desktop applications, games, operating systems, and more.

Uploaded by

施玟宇
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

C++ Programming Overview

HJ Chen
2017/10/11
Contents
> References
> Overview

2
References
> Ivor Horton/ Beginning Visual C++ 2013, 2014 Ed.
> Bjarne Stroustrup/ The C++ Programming Language, 4th Ed., 2013
> Bjarne Stroustrup/ The Design and Evolution of C++, 1994
> Bjarne Stroustrup Website http://www.stroustrup.com/
> Deitel & Deitel/ C++ How To Program, 2nd Ed., 1998
> Juan Soulié/ C++ Language Tutorial, cplusplus.com, 2007
> C++ Website http://www.cplusplus.com/
> C++ Programming / Wikibooks.org, 2012
> C Programming / Wikibooks.org, 2012
> More C++ Idioms/Print Version

3
Overview
Brief C++ History
> 1954 Fortran: (The IBM Mathematical Formula Translating System)
> 1969 B: Ken Thompson at Bell Labs
> 1971 C: Ken Thompson and Dennis Ritchie at Bell Labs
> 1979 C with Classes: Bjarne Stroustrup for his Ph.D. thesis at Bell Labs
> 1982~1983 Cfront: Cfront compiler front-end for the C84 language
> 1983 C++: Bjarne Stroustrup at Bell Labs (naming by Rick Mascitti)
> 1989 ANSI C 89: Standard Template Library and Standard C Library
> 1998 ANSI C++98: ANSI C++ Standard
> 2011 ANSI C++11: ANSI C++ Standard
> 2014 ANSI C++14: ANSI C++ Standard
> 2017 ANSI C++17: ANSI C++ Standard (under development)

5
Honors of Bjarne Stroustrup

6 Data Source: http://www.stroustrup.com/bio.html


Early C++ History
1979: C with Classes first implemented
1982: C with Classes reference manual published
1984: C84 implemented, reference manual published
1985: Cfront 1.0
1985: The C++ Programming Language, 1st edition
1986: The "whatis?" paper documenting the remaining design goals, including multiple
inheritance, exception handling, and templates.
1987: C++ support in GCC 1.15.3
1989: Cfront 2.0
1990: The Annotated C++ Reference Manual
1991: Cfront 3.0
1991: The C++ Programming Language, 2nd edition

Data Source: Bjarne Stroustrup/ The Design and Evolution of C++


7 And http://en.cppreference.com/w/cpp/language/history
Detailed Early C++ History
Data Source: Bjarne Stroustrup/ The Design and Evolution of C++

ISO C++ Standards:


C++98
C++11
C++14
C++17

8
Standard C++ History
1990 ANSI C++ Committee founded
1991 ISO C++ Committee founded
1992 STL implemented in C++
1998 C++98 (ISO/IEC 14882:1998)
1998 The C++ Programming Language, 3rd edition
1999 Boost founded by the committee members to produce new high-quality candidate libraries for
the standard.
2003 C++03 (ISO/IEC 14882:2003)
2006 Performance TR (ISO/IEC TR 18015:2006)
2007 Library extension TR1 (ISO/IEC TR 19768:2007)
2010 Mathematical special functions (ISO/IEC 29124:2010)
2011 C++11 (ISO/IEC 14882:2011)
2012 The Standard C++ Foundation founded
2013 The C++ Programming Language, 4th edition
2014 C++14 (ISO/IEC 14882:2014)
2017 C++17 (under development)
Data Source: Bjarne Stroustrup/ The Design and Evolution of C++
9 And http://en.cppreference.com/w/cpp/language/history
Implementation of C with Classes
> 1980
– Classes
– Derived classes
– Public/private access control
– Constructors and destructors
– Call and return functions
– Friend classes
– Type checking and conversion of function arguments
> 1981
– Inline functions
– Default arguments
– Overloading of the assignment operator

10 Data Source: Bjarne Stroustrup/ The Design and Evolution of C++


Programming Language Relationships by Stroustrup

11 Data Source: Bjarne Stroustrup/ The Design and Evolution of C++


12 Reference: https://webhome.csc.uvic.ca/~mcheng/330/spring.2016/index.html
The Roots of C++

Kristen Nygaard Ole-Johan Dahl


John Backus

David Wheeler Dennis Ritchie

13 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
High-Level and Low-Level

14 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
Why Use C?
> C is flexible
> C is efficient
> C is available
> C is portable

15 Data Source: Bjarne Stroustrup/ The Design and Evolution of C++


Desktop and Windows Applications

16 Data Source: Ivor Horton


Desktop Applications

17 Data Source: Ivor Horton


From Concept Design to C++ Program
1. Represent ideas directly in code.
2. Represent relationships among ideas directly in code (e.g., hierarchical,
parametric, and ownership relationships).
3. Represent independent ideas independently in code.
4. Keep simple things simple (without making complex things impossible).
5. Prefer statically type-checked solutions (when applicable).
6. Keep information local (e.g., avoid global variables, minimize the use of
pointers).
7. Don’t overabstract (i.e., don’t generalize, introduce class hierarchies, or
parameterize beyond obvious needs and experience).

18 Data Source: Bjarne Stroustrup “The C++ Programming Language” 4ed.


19 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
20 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
21 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
22 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
23 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
24 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
25 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
26 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
27 Data Source: CppCon 2016: Bjarne Stroustrup “The Evolution of C++: Past, Present, and Future”
C++ Rule Classification

28 Data Source: CppCon 15: Bjarne Stroustrup “Writing Good C++14”


C++ Core Guidelines
> Web site: https://github.com/isocpp/CppCoreGuidelines
> Document:
http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
> GSL for Clang, GCC and Microsoft:
https://github.com/microsoft/gsl

29 Data Source: CppCon 15: Bjarne Stroustrup “Writing Good C++14”

You might also like