Stroustrup: C++ (original) (raw)
home|C++|FAQ|technical FAQ|publications|WG21 papers|TC++PL|Tour++|Programming|D&E|bio|interviews|videos|quotes|applications|guidelines|compilers
The C++ Programming Language
Modified April 23, 2024
C++ is a general-purpose programming language with a bias towards systems programming that
- isa better C
- supportsdata abstraction
- supportsobject-oriented programming
- supportsgeneric programming.
Or, in other words: C++ is a language for defining and using light-weight abstractions. It has significant strengths in areas where hardware must be handled effectively and there are significant complexity to cope with. This includes many resource constrained systems and much foundational and infrastructure code.
Translations:
I (Bjarne Stroustrup) am the designer and original implementor of C++. You can find the language, the techniques for using it, and the techniques for implementing it described in mybooks, mypapers, in hundreds of books by others, and thousands of papers by others. There are far too many to list. Try a bookstore or a library. Answers to many questions about C++ can be found in
- my FAQ,
- my C++ Style and Technique FAQ
- my C++ glossary, and
- some interviews that I have given.
- The isocpp websiteof The C++ Foundation.
Topics:
- Learning and teaching C++
- How to write good modern C++
- The ISO C++ standard
- Applications, compilers, etc.
- Embedded systems
- Libraries, etc.
- C++ GUI libraries and tools
- C++ design and history
- General resources
- Videos
- Collections of articles
- Related
- The ISO C++ Standard: C++ is standardized by ISO (The International Standards Organization) in collaboration with national standards organizations, such as ANSI (The American National Standards Institute), BSI (The British Standards Institute), and DIN (The German national standards organization). The original C++ standard was issued in 1998, a minor revison in 2003, and a major update, C++11, was issued in September 2011. After that, C++14, C++17, C++20, and C++23 were delivered according to a new ambitious 3-year schedule. The curent standard, a major revision, was published in 2023: C++23.
- The isocpp websiteof The C++ Foundation'ssite for information aboutISO C++ standards activities. Updated regularly.
- holds a draft standard. Note that this is most certainly not a tutorial. You can get the official final version from the ISO or NIST for cash. You are unlikely to need that unless you are a compiler implementer or a historian maintaining an archieve.
- The ISO C++ standards committee (WG21) maintains anofficial sitewith information about the current state of the standards effort. "More than you ever wanted to know about the work on the C++ standard."
- My view of what C++17 should be from April 2015. Note that I don't always get what I want and that I'm quite aggressive about the improvement of C++. C++20 is pretty close to that "vision", though.
- My bookThe Design and Evolution of C++describes the early standards process and many of the design decisions made
- My bookThe C++ Programming Language (Fourth Edition) describes C++ as defined by the ISO standard.
- How to write good modern C++: Much C++ code is writting in achaic styles, missing out on elegance, safety and performance. This is avoidable.
- A paper of how to write guaranteed type and resource safe C++.
- A set of guidelines for writing good, modern, efficient C++on Github.
- A Tour of C++ (third edition): a short book (256 pages plus index, etc.) providing an overview of C++20 with a few key facilities from C++23. It is aimed at people who can program, but might have a 1990s view of C++.
- Applications, compilers, etc.:
- A list of interesting C++ applications. I welcome suggestions for additions.
- A list of major industry applications and tools with evolution paths by Vincent Lextrait.
- An incompletelist of C++ compilers.
- Hans-J. Boehm'ssite for C and C++ garbage collectionand a couple of sites offering collectors based on his work (University of Tokyo,geodesic.com).
- Test suites are available for C++. For example:Plumhall andPerennial.
- Libraries, etc.:
- An extensive list ofcurrent C++ libraries fromC++.org.
- A list of available C++ libraries known asthe C++ libraries FAQ.
- Boost.org: A repository for libraries meant to work well with the C++ standard library.
- STLab: a collection of peer-reviewed and portable C++ source libraries, leveraging and extending both the C++ Standard Library and the Boost Libraries. That page also contains links to Adobe open source libraries, such as the Generic Image LibraryGIL.
- From cppreference.com:A list of open-source C++ libraries.
- High-performance numerical libraries provide excellent tests for interesting new programming techniques:The Object-Oriented Numerics Pageis a list of libraries, projects, and mailing lists. NotablyROOT from CERN. These libraries, and many more, are available for downloading.
- C++ design and history:
- 2006-2020:Thriving in a crowded and changing world: C++ 2006–2020.
- 1991-2006:Evolving a language in and for the real world: C++ 1991-2006.
- 1979-1991:A History of C++: 1979-1991.
- A more comprenensive book:The Design and Evolution of C++.
- The Computer History Museum'ssite for early C++ sources(code, documentation, papers, etc.).
- An old, but unfortunately not completely irrelevant, net postinganswering some unfair criticisms of C++. I wrote this in 1994. I had hoped that our field would mature so that uninformed flames would become rare; I was naive.
- C++ GUI libraries and toolkits:
- Embedded systems:
- A confence paper on the basic ideas of using C++ in embedded systems.
- JSF++: The JSF air vehicle C++ coding standards.
- The ISO C++ committee's TR on performance. Very dated.
- Embedded systems programming is not just a niche concern: I cover it inChapter 25of the second edition my textbookProgramming: Principles and Practice using C++.
- FAQs:
- isocpp.org's "Super FAQ". It is generally to be preferred over the other FAQs
- My FAQ.
- My C++ Style and Technique FAQ.
- My C++0x FAQ.
- Marshall Cline's C++ FAQ.
- C++ Standards FAQcontaining many valuable links (including some to implementations of the standard library).
- Thelearn.c-c++ newsgroup FAQpresents much information of use for C and/or C++ novices.
- Learning and teaching C++:
- My beginner's programming text bookProgramming: Principles and Practice using C++.
- A Tour of C++: a short book (256 pages plus index, etc.) providing an overview of C++ as it is in 2024. Aimed at people who can program, but might have a 1990s view of C++.
- A list of resources for people learning C++ fromThe Cambridge University Engineering Department.
- An extensive collection of book reviews can be found onthe ACCU (The Association of C and C++ Users) site.
- General resources:
- ACCU; a C++ community site maintained by "The Association of C and C++ Users." In particular, it holds the CVU and Overload magazines.
- A C++ idioms list.
- Collections of articles:
- Herb Sutter's collection of articlesfocussing on how to learn and use Standard C++ in a modern style.
- Kevlin Henneys' collection ofthought provoking and useful articlesabout good C++ design and style.
- Artima's C++ sourcehas a collection of C++ articles, columns, etc.
- Videos:
C++: an invisible foundation. A short talk plus a Q&A with the ACM student chapter at Hacettepe University in Ankara, Turkey. February 2021.- A short introduction to the aims and status of modern C++. Arhus University, Computer Science Department seminar. October 2020.
- The Beauty and Power of "Primitive" C++. Cppcon 2020 Opening Keynote. September 2020.
- The continuing evolution of C++. University Carlos III Madrid CS department. January 2019.
- Concepts: The future of generic programming (the future is here). University Carlos III Madrid CS department. January 2019.
- No littering!. Talk to Madrid C++ users groups. January 2019.
- Steve Carroll for Channel-9:An interview with Bjarne Stroustrup and Gabriel Dos Reisat CppCon 2018 about concepts, modules, and the essentials for language evolution. And the story of the good ship Vasa.Channel-9 copy. September 2018.
- What C++ is and what it will become. Opening keynote at Meeting C++. Berlin. November 2016.
- "Concepts" explained in 12 minutes. Meeting C++. Berlin. November 2016.
- The Driving Force Behind C++"An 18-minute TEDx talk in Shanghai. October 2016.
- Two talks at Budapest Technical University. A talk by my colleague Abel Sinkovic on debugging metaprograms followed by one by me on type- and resource-safe C++. Abel's talk should be compulsory watching for people who claim that we don't urgently need concepts. May 2016.
- C++ Today. An semi-technical talk to Churchill College Computer Society. Churchill is my Cambridge College. 36 minutes. May 2016.
- Oral History of Bjarne Stroustrup. For the Computer History Museum 2 hours.with transcript. September 2015.
- Object-oriented programming without inheritance. ECOOP'15 Keynote. Prague. July 2015.
- A video interview about Cppcon and the C++ core guidelines. September 2015.
- Writig good C++14. My Cppcon 2015 keynote. September 2015.
- All the talks (incl. mine) from CppCon 2015. That's about 100 quality talks. September 2015.
- Make simple tasks simple. My Cppcon 2014 keynote. September 2014.
- All the talks (incl. mine) from CppCon 2014. That's about 100 quality talks. September 2014.
- An online "Event" and Q&A. August 2014.
- Lang.Next'14 Keynote: What -- if anything -- have we learned from C++? A 68 minute talk incl. Q&A.
- GoingNative'13 Keynote: The Essence of C++: With Examples in C++84, C++98, C++11, and C++14. A 96 minute talk incl. Q&A.
- An interview about Software Development for Infrastructure.
- GoingNative'12 Keynote: C++11 Style. A 90 minute talk incl. Q&A.
- AnAT&T Tech Channel presentation ofmy work and its impact from theirTech Icons series.
- A talk on C++0xat CERN, September 2009.
- The ACM HOPL-iii HOPL-iii videos (incl. mine). June 2007.
- A C++0x talk given atUniversity of Waterloo.Google, NYC. August 2007.
- A talk on C++0x initializer lists given at Google, Mountainview. February 2007.
- Several videos, audio recordings, and transcripts of talks, panels, and interviews fromDr. Dobb's Technetcast archieves.
- Alex Stepanov (the father of the STL) on the importance of Mathematics in Programming.
- A 1994 lecture: The Design of C++ (also known as "The flying goose talk" What happend was that I was supposed to use a teleprompter, which I hated, so when it broke down a third way into the talk, I could not see the slides or any notes; I was flying blind. The last two thirds of the talk was done without props, completely from memory. When I couldn't think of what to say next, I pulled the string on the goose to gain time). Put up by the Computer History Museum.
- Related:
- Dennis Ritchie's homepage con taining lots of interesting information about the history of C, Unix, and (AT&T) Bell Lab's computer science research center (where C++ was born).
- The Computer History Museum's Software Preservation Group'scollection of C++ sourcescurrently focusing on the early years. Contributions are most welcome (see the site for details).
When I list a site it is because I found some interesting information there, not because I wanted to endorse a product. All the major software suppliers have C++ related information on their sites. If you feel that I ought to add a site, feel free to tell me what and why.
home|C++|FAQ|technical FAQ|publications|WG21 papers|TC++PL|Tour++|Programming|D&E|bio|interviews|videos|quotes|applications|guidelines|compilers