C++ Primer (5th Edition) - (by Stanley Lippman, Josée Lajoie, and Barbara Moo)
-----
>This is a beginner book.
>Introductory level with no previous programming experience.
>Coming at 1k pages, this is a very thorough introduction into C++ that covers just about everything >in the language in a very accessible format and in great detail.
>The fifth edition (released August 16, 2012) covers C++11.
-----
>Review:
>About 20 years ago Stan Lippman wrote the first edition of this book. At the time of writing it was among the best introductions to C++ published. A few years later the author produced a 2nd edition which tracked changes that were happening to the C++ language as it was being standardised. Soon after the C++ Standard was finalised the 3rd edition was published with a surprise second author, Josée Lajoie (well it was a surprise to me). Josée is a gifted teacher who at that time was working for IBM. She is a French Canadian but her English fluency would shame many for whom it is their first language. I know this from personal experience because she effectively mentored me during my first five years of active participation in WG21, giving freely of her insights and being very patient with this jumped up amateur. Her skills took a good book and turned it into an authoritative one.
>Soon after the TC that updated C++ in 2003 a 4th edition appeared. This had acquired yet another new author, Barbara Moo who has many years of programming experience and a real gift for writing about the most obtuse technical points with great clarity. She co-authored 'Ruminations on C++' with Andy Koenig (her husband, and author of what must be the longest running programming book without amendments, C Traps and Pitfalls, as relevant today as it was when it was first published in 1989). Ruminations on C++ is still a delight to read and is a model of how to write about technical things in a readable style. (If you have never read Ruminations on C++, get a copy and enjoy it.)
>Barbara completely rewrote The C++ Primer (I do not know how much input came from Stan Lippman, and I guess none from Josée as she had moved on to academia and, as far as I know, was no longer programming in C++). I guess that Andy Koenig could not resist reading over her shoulder and making the odd suggestion now and again. The resulting book was even better than the 3rd edition (much better in my opinion, but that is not to belittle the previous editions).
>And now C++ has undergone a major overhaul with 'making it easier to teach' being one of the criteria and so it is clearly time for yet another edition.
>This time two things have been done, the text has been revised. However well you write the first time you think of better ways to express yourself when you come back to it after a few years. Comparing the 4th and 5th edition side by side shows that the authors (again I suspect that is mostly Barbara) have taken the text of the 4th edition and reworked it. The second thing is that the code and content has been completely revised to make use of the changes that C++11 introduced.
>C++ is a vast language and any author writing an introduction must select what they intend to cover. I believe that the authors have made sensible decisions as to what to cover and what to omit. The only area that I cannot find (I am working from a draft without an index) that I think I would have covered is lambda functions. Those are at least as useful, and arguably simpler, as parameter packs and variadic templates which are covered.
>There is the additional problem with writing a book so soon after the release of the new standard; many compilers have not fully caught up with all the new bits but this is rapidly changing.
>The authors write on the assumption that readers would be better off using a command line. That is a point with which I disagree. I much prefer to have novices use an IDE (such as Code::Blocks) with as up-to-date a version of g++ as I can get (currently I am using 4.7). However this does not really matter, just use whatever you are comfortable with.
>If you are in the target readership, those with either a talent for programming or with some prior programming experience in another language (or possible C++ some years ago) then I can confidently say that this book will introduce you to C++ and set your feet firmly on the road to mastering the language.
>This is not a book for those who are already relatively fluent in C++ as it was and wanting to update themselves to the latest version. Those people will need to look elsewhere. But if friends, colleagues or relatives want to learn heavy duty C++ and have some prior programming experience point them at this book and warn them that they need this edition and not an earlier one.