Wednesday, March 12, 2008

c++

homepage C++links FAQ technical FAQ glossary compilers publications C++TRs TC++PL D&E bio interviews applications TAMU AT&T Research
The C++ Programming Language
Modified January 24, 2008
Advice of the day(from TC++PL)16.4[18] When necessary, use reserve() to make performance predictable; sec16.3.8.
FAQ of the dayWhy is the language called C++?
Article of the dayAbstraction and the C++ machine model. ICESS'04. December 2004. C++ is a general purpose programming language with a bias towards systems programming that
is a better C
supports data abstraction
supports object-oriented programming
supports generic programming.
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 my books, my papers, 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.
C++ has been standardized by ANSI (The American National Standards Institute), BSI (The British Standards Institute), DIN (The German national standards organization), several other national standards bodies, and ISO (The International Standards Organization). You can find a somewhat out-of-date draft standard here. The ISO standard has been finalized and adopted by unanimous vote Nov 14, 1997. It was ratified in August 1998 by a 22-0 vote. The standard is ISO/IEC 14882; it is available for downloading at the National Committee for Information Technology Standards Electronic Store. The cost is (as I write this) US$18.00 payable on-line via credit card. The downloaded document is in PDF form, 2794KB total size. The ISO C++ standards committee maintains an official site with information about the current state of the standards effort. ISO has published a revised standard (with relatively minor clarifications and resolutions known as Corrigenda 1) as ISO/IEC 14882:2003. It is available as a book (on paper): "The C++ Standard", published by Wiley, ISBN 0 470 84674-7. Here are some more standard-related links
a press release about C++ and its standard intended for non-programmers
a press release about the availability of the standard
My book The Design and Evolution of C++ describes the standards process and many of the design decisions made
My book The C++ Programming Language (Special Edition) describes C++ as defined by the ISO standard.
The standard committee's technical report on implementation issues and programming techniques related to performance. This should be of particular interest to programmers of embedded systems.
The standard committee's technical report on library extensions that are likely to become part of C++0x (possibly after some revisions).
My foreword to the printed version of the C++ standard.
An 2004 evolution working group wish list; that is, the list of suggested additions to the C++ core language - note that only a fraction of these will be accepted into C++0x. Here is the current state of the evolution proposals.
A standard library wishlist maintained by Matt Austern.
A call for proposals for further standard libraries.
Discussions about C++ and its use can be found in most forums covering programming. The usenet groups comp.lang.c++.moderated and alt.comp.lang.learn.c-c++ are good examples. These groups can be accessed in various ways including Google Groups (sort by date).
More links:
A list of interesting C++ applications. I welcome suggestions for additions.
An incomplete list of C++ compilers.
A list of available C++ libraries known as the C++ libraries FAQ.
Boost.org: A repository for libraries meant to work well with the C++ standard library.
The Computer History Museum's site for early C++ sources (code, documentation, papers, etc.). If you want easier to digest information about C++'s past, read My paper about C++'s design and early years or the more comprenensive book The Design and Evolution of C++.
Doug Schmidt's site with information about a lot of things including the ACE framework and the TAO real-time ORB.
High-performance numerical libraries provide excellent tests for interesting new programming techniques: The Object-Oriented Numerics Page is a list of libraries, projects, and mailing lists. For example: POOMA from LANL, Blitz++ from U. of Waterloo, MTL from Indiana Univarsity, and ROOT from CERN. These libraries, and many more, are available for downloading.
Hans-J. Boehm's site for C and C++ garbage collection and a couple of sites offering collectors based on his work (University of Tokyo, geodesic.com).
C++ Standards FAQ containing many valuable links (including some to implementations of the standard library).
Several test suites are available for C++ (try looking for ``C++ test suite'' using your favorite search engine. For example, Plumhall and Perennial sell extensive commercial standards conformance suites.
An old, but unfortunately not completely irrelevant, net posting answering some unfair criticisms of C++.
A net posting about how to approach learning C++.
An ASCII version of the slides I used for my keynote at the Spring'99 Embedded Systems Conference.
For a look at how ISO C++ can be used for serious embedded systems programming, see
JSF++: The JSF air vehicle C++ coding standards
The ISO C++ committee's TR on performance
A confence paper on the basic ideas of using C++ in embedded systems.
Marshall Cline's C++ FAQ.
The learn.c-c++ newsgroup FAQ presents much information of use for C and/or C++ novices.
STL (Standard Template Library) FAQ.
SGI's implementation of the STL.
Dinkumware's online standard library reference.
Rogue Wave's online documentation of an commentary on the standard library.
An extensive collection of book reviews can be found on the ACCU (The Association of C and C++ Users) site.
Sean Corfield's site summarizing the changes from ARM C++ to Standard C++.
David Tribble's paper listing incompatibilities between C++ and C99.
A list of resources for people learning C++ from The Cambridge University Engineering Department.
A list of C++ resources such as libraries, implementations, books, FAQs, other C++ pages, etc..
A large (18,000+) collection of links to information on OO, OOP languages, etc. called Cetus.
A page listing numerous GUI toolkits.
A list of major industry applications and tools with evolution paths by Vincent Lextrait.
A catalog of C++ links from Forschungszentrum Julich.
Addison-Wesley Longman's links to C++ and OOP resources.
Greg Comeau's C++ related site in New York.
Brad Appleton's collection of C++ and OOP links.
The C++ section of the open directory project.
Herb Sutter's collection of articles focussing on how to learn and use Standard C++ in a modern style.
Kevlin Henneys' collection of thought provoking and useful articles about good C++ design and style.
Artima's C++ source has a collection of C++ articles, columns, etc.
Danny Kalev's C++ articles and news items on informIT.com.
Videos:
A C++0x talk given at University 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 from Dr. Dobb's Technetcast archieves.
Dennis Ritchie's homepage containing 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's colection of C++ sources currently focusing on the early years. Contributions are most welcome (see the site for details). Some of these sites are commercial. They are listed 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.
homepage C++links FAQ technical FAQ glossary compilers publications C++TRs TC++PL D&E bio interviews applications TAMU AT&T Research

No comments: