TITLE: Notes on the ARM and D&E RESPONSE: bs@alice.att.com (Bjarne Stroustrup), 1 Apr 94 Let me try explain how the ARM, ``The C++ Programming Language (2nd edition)'', and my new ``Design and Evolution of C++'' books relate to each other. The ARM Margaret A. Ellis and Bjarne Stroustrup: The Annotated \*C Reference Manual. Addison-Wesley, Reading, MA. 1990. ISBN 0-201-51459-1. 478 pages. Hardcover. is the C++ reference manual annotated with information supposedly of interest to language lawyers and implementers, plus a chapter on ANSI/ISO resolutions. Eventually, the ARM and every other C++ reference manual will be outdated by the work of the ANSI/ISO committee. For most users, I don't think this has happened yet. If you write C++ compilers, C++ test suites, and the like you need to have the committee's working paper (and preferably be represented on the committee); if not, the ARM provides a sufficient - and importantly, stable - reference. My 2nd edition Bjarne Stroustrup: The \*C Programming Language (2nd edition). Addison-Wesley, Reading, MA. 1991. ISBN 0-201-53992-6. 696 pages. Softcover. is a complete C++ tutorial for experienced programmers, plus the C++ reference manual, plus three chapters on design issues, plus a chapter on ANSI/ISO resolutions. You can learn C++ programming from the 2nd edition, but not from the ARM (not easily, at least). You can find really obscure details and techniques for implementing C++ in the ARM, but not in my 2nd edition. My 2nd edition has a chapter on iostreams (from a user's point of view). Neither book describes any of the larger C++ libraries or any implementation specific details. The chapter on ANSI/ISO resolutions is common to the ARM and my 2nd edition (modulo differences between printings). It is available via ftp ftp ftp.std.com cd AW cd stroustrup2e get ... I also place errata there. The ANSI/ISO chapter is an attempt to address the problem of how to keep a book completely up-to-date without messing about with its content to the point where it becomes useless as a common point of reference. The approach is feasible because the changes fit into the overall pattern of the language. D&E Bjarne Stroustrup The Design and Evolution of C++ Addison Wesley, Reading, MA. 1994. ISBN 0-201-54330-3. 472 pages. Softcover. is a discussion of why C++ is the way it is. It describes the design of C++. The emphasis is on the overall design goals, practical constraints, and people that shaped C++. It is not a book trying to document every little detail of the language or its use. The point of view in the discussion of C++ tend to be that of a user (programmer or designer) rather that of a language lawyer. Most books you find in a bookseller's ``programming languages'' section fall into one of two categories: The manuals (``this is what XXX is'') and the tutorials (``this is the way you do YYY''). D&E does not fall into either. It relies of my 2nd edition (or some other quality tutorial) for teaching C++ programming, and it is certainly not a manual (use the ARM or the reference manual in my 2nd edition). D&E should give you a much better appreciation of the way the features of C++ fit together. It is my hope (and experience) that understanding of such matters help people write better programs, but the book's primary aim is not on specific programming techniques. Naturally, D&E is completely up-to-date in its description of C++. The features described in the ANSI/ISO chapters of the ARM and my 2nd edition are described in some detail in their proper contexts in D&E. The overlap in the content of the three books is quite limited. The ARM and my 2nd edition share the reference manual and the ANSI/ISO chapter. The D&E and the ARM annotations overlap slightly (on the order of 10% I would guess) and D&E and my 2nd edition share a few examples. However, even in those cases the point of view tend to differ. I'm pretty sure that the overlap in contents between any two quality tutorials is far greater.