C++ Primer (5th Edition) (英語) ペーパーバック – 2012/8/10
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
Bestselling Programming Tutorial and Reference Completely Rewritten for the New C++11 Standard
Fully updated and recast for the newly released C++11 standard, this authoritative and comprehensive introduction to C++ will help you to learn the language fast, and to use it in modern, highly effective ways. Highlighting today’s best practices, the authors show how to use both the core language and its standard library to write efficient, readable, and powerful code.
C++ Primer, Fifth Edition, introduces the C++ standard library from the outset, drawing on its common functions and facilities to help you write useful programs without first having to master every language detail. The book’s many examples have been revised to use the new language features and demonstrate how to make the best use of them. This book is a proven tutorial for those new to C++, an authoritative discussion of core C++ concepts and techniques, and a valuable resource for experienced programmers, especially those eager to see C++11 enhancements illuminated.
Start Fast and Achieve More
- Learn how to use the new C++11 language features and the standard library to build robust programs quickly, and get comfortable with high-level programming
- Learn through examples that illuminate today’s best coding styles and program design techniques
- Understand the “rationale behind the rules”: why C++11 works as it does
- Use the extensive crossreferences to help you connect related concepts and insights
- Benefit from up-to-date learning aids and exercises that emphasize key points, help you to avoid pitfalls, promote good practices, and reinforce what you’ve learned
Access the source code for the extended examples from informit.com/title/0321714113
C++ Primer, Fifth Edition, features an enhanced, layflat binding, which allows the book to stay open more easily when placed on a flat surface. This special binding method—notable by a small space inside the spine—also increases durability.
Stanley B. Lippman has retired back to the Catalina Foothills where he is working on EEEK!, a computational model of the nervous system of the House Mouse, and An Off By One Error, a speculative novel set in the Northwestern Rain Forest. During his professional career, Stanley served as Distinguished Consultant for the Jet Propulsion Laboratory, Architect for the Visual C++ development group at Microsoft, member of technical staff at Bell Laboratories, two stints in Massive Multiplayer Online Gaming, and a surprisingly long stint in Feature Animation at Disney, DreamWorks, Pixar, and PDI. Stanley will be most remembered for his many years working with Dr. Stroustrup on the implementation of cfront, the standard implementation of C++ until the ISO standard.
Josée Lajoie, now at Pixar, was a member of IBM Canada’s C/C++ compiler development team, and chaired the core language working group for the original ANSI/ISO C++ standardization committee.
Barbara E. Moo has nearly thirty years of software experience. During her fifteen years at AT&T, she worked closely with C++ inventor Bjarne Stroustrup and managed the C++ development team for several years.
Amazon.com で最も参考になったカスタマーレビュー (beta) （「Early Reviewer Program」のレビューが含まれている場合があります）
As a tip to any beginners, read through the book lightly for the first time. What I mean is that don't attempt to understand everything right away and don't focus too much on the details. Make a note of the areas you had difficulty understanding, do a slight research to see if you can grasp it right away, but don't focus on that too much. You'll be surprised how much of the earlier information will become clear and a second nature to you as you progress further. Once you're done with your first read-through, go back and see if you still don't understand any of the areas you've marked down. I'm sure that you'll be able to eliminate many of them. At this point, focus heavily on the areas you still have difficulty with. Of course, results will vary and not everyone learns the same way, but this has worked out very well for me. That's how I study for everything. I read through any material very lightly the firs time around, to get the general feeling and find the areas I'll be focusing on, and then go back to focus on those details. This strategy helped me maintain 4.0 in Computer Science, so the results are real (but once again, it may vary by person).
About a year ago, I had to upgrade to C++11/14 and due to constraints on my time, started reading selected portions of this highly readable book. During the process, I immediately noticed the crisp, precision and accuracy of the writing and eventually over next seven or so months, ended up reading it completely!
For one example, you could see how they explain, towards the end of the book, the C++ memory allocation options. Many years ago, another (admittedly otherwise good) book tried to explain the nuances of "new expression", "placement new" and the "operator new library function" in a supposedly funny yet readable way but ended up completely confusing most readers. Even recently, I have run into people who were misguided by that book in their understanding of C++ memory management! In the current book, the authors took less than three pages to lay out the whole story clear and complete. This is but one example.
The best parts of the book are its coverage and writing style: comprehensive, accurate and readable. Good technical editing and extensive proof reading are evident. It does not seem like there are many typos left in the ~900 pages thick book (and hopefully there would be five less of them in the next edition - if they take in my corrections). The expertise of the authors is consistently conspicuous throughout. Using this book for day-to-day C++ programming brings back the sense of security one experienced using Harbison and Steele's "C A Reference Manual" with C programming.
During the prime days of C, there were three essential books: "Kernighan & Ritchie", "C A Reference Manual" and "C Traps and Pitfalls". The current book is like the modern C++ reincarnation of all those three and more.
From the layout of the pages, it is apparent that the authors and publishers have struggled with the size of the book: they seem to have gone to the extremes to save space!
The Good: This book is over 800 pages long, and it is quite complete in its coverage, but it is highly readable. The "C++ Primer" can be used as an introductory text: the authors have interspersed a myriad of code snippets throughout the text (which they also integrated into complete working programs; these are provided on the publisher's website, packaged for different platforms). Similarly, there are exercises at the end of most sections; these are well thought out, and greatly facilitate the reader's learning (unauthorized solutions exist on the web in the form of a wiki). Furthermore, throughout the book parts of the text have been highlighted to call attention to common pitfalls, good programming practices, and important concepts. Finally, each chapter concludes with a summary and a glossary of defined terms. In contradistinction to many other popular volumes, this book teaches real C++, not "C with classes", i.e., it contains extensive treatments of the standard library containers and algorithms, of object-oriented programming, and of generic programming. For example, the coverage of the standard library in this book is much more extensive than in "C++ Primer Plus" by Stephen Prata, a book that is often compared with (or confused with) the "C++ Primer". Even so, the "C++ Primer" also covers a number of older topics such as C-style character strings, lower-level bit manipulation of integral values, and old-style casts. The material in this book is thematically organized (pointers, expressions, functions, classes, constructors, object-oriented programming, template programming, etc.). This, along with the many forward and backward cross-references, makes it a great reference both for people who have never read it, and for those who read it a while back.
The Bad: Object-oriented programming is covered in approximately 60 pages. The coverage is solid, just like in the rest of the book, but it is condensed. For the sake of comparison: Josuttis's book "Object-Oriented Programming in C++" devotes 170 pages on more or less the same topics. In other words, an object-oriented design background, while not strictly necessary, would make reading this book easier. This aspect of "condensedness" is a more general feature of reading the "C++ Primer": even though the book is quite long, there is no filler material. This slows the reader down, so it might interfere with one's progress when using this as a first C++ book. For example, the first 300 pages (perhaps mention but) do not discuss in detail the standard library algorithms, smart pointers, object-oriented or generic programming, and other aspects of professional C++ development. A related point: I mentioned above that the book works as a reference since it is complete and contains many cross-references. A side-effect of this is that some of the earlier chapters make repeated mention of topics that have not yet been covered; that's great if this is your second C++ book (since it means every chapter is complete), but is potentially too much information for a total newbie. Finally, this book was intentionally limited to Standard C++. As a result, it doesn't talk about TR1 (a specification for functionality being added to C++'s standard library) or boost (a collection of libraries offering TR1 implementations and much more), or threading in C++. A 5th edition of the "C++ Primer" will probably appear after the new standard (still known as C++0x) comes out.
Despite the few drawbacks that I have noted above, I believe that this is a wonderful book which deserves 5 stars.
Here are my suggestions on related reading.
* Accelerated C++, by Andrew Koenig and Barbara E. Moo
An excellent first book on C++. Goes through many topics quite fast, but is highly readable. Covers essentially all of standard C++ in under 300 pages (see also my review of it on amazon).
* Effective C++, 3rd edition, by Scott Meyers
This assumes you have already come across all of the material contained in the "C++ Primer". It offers solid advice on numerous aspects of effective C++ development. Meyers also describes a few design patterns as well as more modern topics like TR1.