Você está na página 1de 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”

Você também pode gostar