39 of 40 people found the following review helpful:
5.0 out of 5 stars
Third Edition: Improving an already great book, May 27, 2005
This review is from: Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition) (Paperback)
How do you improve a book that has been known as a "bible" in the C++ community for years? As Scott mentions at the beginning of the text, he almost threw everything out, and started from scratch. When I first say the book, I thought that there are five new items that were added to the book, but I couldn't be more wrong. As you might have guessed, C++ has gone thru a number of significant changes over the past decade, and the third edition of this book is updated to take advantage of the new editions to the C++ standard. In reality, almost every item in this book has gone thru a re-write. Many have been consolidated and new chapters, topics and many new items have been added. A few items that did not make sense anymore like items 2, 3 and 4 in the second edition are removed from this third edition.
Scott breaks down the c++ language into 4 subparts:
* The old C subsystem. Before all these advanced programming languages such as Java and .NET came, C was the language of choice. C++ is "translated" to C first, and then complied and linked to an executable.
* OO C++, which is C with Classes. This is where the concept of Object Orientation in C++ started. Even though this concept was very much new a decade ago, it is very much part of a programmer's vocabulary.
* Template C++, which is the newest edition to the C++ standard and it brings with it the concept of Template Metaprogramming. This concept is very much new, and this book has dedicated a whole chapter around templates, and template metaprogramming.
* STL, which is the C++ Standard Template Library. Again, STL was a new concept a few years back, but it is very much an established notion in C++.
Scott has taken a new approach to this book and has covered all four of these subparts. He has a book dedicated to STL, but he is using STL notions and "language" throughout this book. The chances are that the reader is already familiar with other languages such as Java and .Net, so the text covers area where these two languages differ with C++, especially in the area of inheritance and polymorphism. But not everything has changed. Topics such as,"Explicitly disallow the use of Compiler Generated functions you do not want," will never get old or outdated.
New chapters cover topics such as C++ Template and Generic Programming, Resource Allocation and topics that cover the latest C++ standard and additions, including the TR1 (Technical Report 1). "new and delete" have been separated into their own chapter, and the author goes into great depth demonstrating to the reader the various ways that these two operators can be modified, and why.
Exceptions and programming in light of exceptions is also a very new concept in C++. The previous versions on this text did not touch on exceptions all that much, but the author has spread the use of exceptions throughout the text, with a number of items dedicated explicitly to exceptions and exceptions handling.
The updated items, new topics and chapters and a new look and feel of the text with color coded examples make this book a joy to for C++ programmer to read.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
16 of 17 people found the following review helpful:
5.0 out of 5 stars
Age brings wisdom..., June 15, 2005
This review is from: Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition) (Paperback)
"Effective C++: 55 Specific Ways to Improve Your Programs and Designs" recently came out in its 3rd edition. The first came out in 1991, making this line of book revisions positively ancient in high tech terms. But you should consider the elapsed 14 years an investment in wisdom, not obsolescence. Unlike the 2nd edition, this is a complete rewrite from the ground up. More than that, Scott Meyers begins from first principles, reevaluating what topics are most important to the programmers of 2005.
This was a very strategic and insightful move. Not only has the language evolved over that time, but the audience has too. In the first edition, the likely readers were coming from languages like C. Now the likely readers cross over from some other object-orient language, like Java or C#. Keep in mind
that the author focuses strictly on standard C++; he does not address anything that is platform-specific.
Like its predecessors, the items can be read stand-alone, and he does cross reference related items. The 55 items are grouped into the following chapters:
Chapter 1: Accustoming Yourself to C++
Chapter 2: Constructors, Destructors, and Assignment Operators
Chapter 3: Resource Management
Chapter 4: Designs and Declarations
Chapter 5: Inheritance
Chapter 6: Implementations and Object-Oriented Design
Chapter 7: Templates and Generic Programming
Chapter 8: Customizing new and delete
Chapter 9: Miscellany
I would hate to have to learn the lessons in this book by hard experience. It would be costly in time and unfortunately might even cover more than one employment span.
Most decisions that are undertaken by developers should consider ROI (return on investment), which always is measured in terms of time. For developers considering professional education material like this, the measure should be in terms of how many mistakes could be avoided before the book pays for itself. In this case, the ROI is probably less than 2 defects.
If your shelfspace for C++ books has only a few slots, this book should be in your "must haves." The book's ISBN is 0-321-33487-6 and it retails for $45 US. Scott's web site is at http://aristeia.com and the errata for this book is http://aristeia.com/BookErrata/ec++3e-errata.html.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No