18 of 18 people found the following review helpful
A significant rework of the 3rd edition,
Verified Purchase(What's this?)
This review is from: The C++ Programming Language, 4th Edition (Paperback)
Apparently, I lucked out and got a decent book with decent shipping, as the quality of my copy is superb.
The C++ Programming Language (3rd Edition) and C++ in a Nutshell are my two primary go-to references for day-to-day C++ programming (and stackoverflow of course). As a primarily-embedded C/C++ programmer for over 25 years, I don't read books like this cover-to-cover. Instead, I bounce around the book to explore topics, gain deeper insight, or refresh my memory on some obscure corner of the language. Having done that now for over a month, I've come to like this new edition. Typography-wise, the 4th edition is easier on the eyes, with better use of whitespace, liberal use of navy blue for keywords and program examples, and more tables and graphics than in the previous edition. This may sound trivial, but it's not--I find the improved layout makes this edition much more accessible as a reference than the more densely-printed 3rd edition.
This edition is a significant rewrite from the 3rd edition. Obviously, it contains a lot of new material covering the C++11 additions to the language. As you would expect, there are entire new chapters on concurrency and threads and processes. However, there are also significant expansions of previous topics. For example, the discussion of the iostream 'locale' facilities occupied a little more than one page in the 3rd edition; in the 4th edition 'locale' gets an entire chapter of its own, with a much greater discussion of facets, money, and the like. Concepts like RAII are now covered in detail. Overall, my impression is that Mr. Stroustrup attempted to expand topics that are of increasing prominence today, and for the most part succeeded. In addition, one of my favorite parts of the older edition, Mr. Stroustrup's lists of programming advice at the end of each chapter, are still there, revised and expanded as necessary. Sadly, what is missing are the old 3rd edition chapters on Development and Design, and Design and Programming. Not only were these sort of a condensed Peopleware: Productive Projects and Teams (3rd Edition) that I enjoyed reading, they also allowed the word 'moron' to appear in the index of the 3rd edition--a word that is now gone from the index of the 4th edition, but still applicable on many product teams :-)
My only complaint with this new 4th edition is that it truly does represent C++ 'moving on'. There is no delineation in the text between C++11 additions and the earlier language constructs. As Mr. Stroustrup mentions in the intro, this is a deliberate choice on his part to present C++ as an "integrated whole, rather than as a layer cake". The old 3rd edition Appendix B "Compatibility" is now Chapter 44, "Compatibility", and the list of changes is presented there. I would have preferred that Mr. Stroustrup would at least have put margin bars in those places where C++11 changes occurred. Not everyone is running the latest GNU desktop compiler; in the embedded world in particular change comes slowly, and some of the C++11 changes are subtle enough that you might occasionally believe an example would work until the compiler informs you otherwise.
Overall, I consider this an excellent reference to C++, more accessible than the previous edition, updated with the latest techniques, and with better coverage of contemporary topics. That said, I also intend to keep my 3rd edition around for a while longer, as a lot of the sections pertaining to dealing with older compilers and interfacing with older libraries did not make it to this new edition. As management likes to say: 'let them eat (layer) cake'.