C++ Templates: The Complete Guide
by David Vandevoorde; Nicolai M. Josuttis
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
by David Abrahams; Aleksey Gurtovoy
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
by Herb Sutter; Andrei Alexandrescu
Elements of Programming
by Alexander Stepanov; Paul McJones
Head First Object-Oriented Analysis and Design
by Brett McLaughlin; Gary Pollice; David West
The C++ Programming Language, Special Edition
by Bjarne AT&T Labs Murray Hill, New Jersey Stroustrup
C++ Without Fear: A Beginner’s Guide That Makes You Feel Smart
by Brian Overland
Modern C++ Designis an important book. Fundamentally,
it demonstrates ‘generic patterns’ or ‘pattern
templates’ as a powerful new way of creating extensible
designs in C++–a new way to combine templates and patterns
that you may never have dreamt was possible, but is. If your work
involves C++ design and coding, you should read this book. Highly
recommended.
–Herb Sutter
What’s left to say about C++ that hasn’t already
been said? Plenty, it turns out.
–From the Foreword by John Vlissides
In Modern C++ Design, Andrei Alexandrescu opens new vistas for C++ programmers. Displaying extraordinary creativity and programming virtuosity, Alexandrescu offers a cutting-edge approach to design that unites design patterns, generic programming, and C++, enabling programmers to achieve expressive, flexible, and highly reusable code.
This book introduces the concept of generic components–reusable design templates that produce boilerplate code for compiler consumption–all within C++. Generic components enable an easier and more seamless transition from design to application code, generate code that better expresses the original design intention, and support the reuse of design structures with minimal recoding.
The author describes the specific C++ techniques and features that are used in building generic components and goes on to implement industrial strength generic components for real-world applications. Recurring issues that C++ developers face in their day-to-day activity are discussed in depth and implemented in a generic way. These include:
Policy-based design for flexibility
Partial template specialization
Typelists–powerful type manipulation structures
Patterns such as Visitor, Singleton, Command, and Factories
Multi-method engines
For each generic component, the book presents the fundamental problems and design options, and finally implements a generic solution.
In addition, an accompanying Web site, http://www.awl.com/cseng/titles/0-201-70431-5, makes the code implementations available for the generic components in the book and provides a free, downloadable C++ library, called Loki, created by the author. Loki provides out-of-the-box functionality for virtually any C++ project.
Get a value-added service! Try out all the examples from this book at www.codesaw.com. CodeSaw is a free online learning tool that allows you to experiment with live code from your book right in your browser.
0201704315B11102003
Average Amazon.com® Rating: ![]()
![]()
![]()
![]()
Based on 69 Ratings
Great book with an important caveat - 2007-10-19
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
That caveat being: the book is not of immediate _practical_ value to most C++ programmers (other than as a brain teaser or inspiration, both of which are of course very important). Let me explain. The book is 5-star material but its audience is rather specific. Most of the techniques described in it are useful to _template libraries_ designers only. For others these techniques would fall into the "vastly overly clever" category. In real life such cleverness is a serious impediment and a maintenance nightmare as every manager knows. A template library programmer, however, can benefit tremendously from this book since template libraries must be very clever and tricky indeed.
One more note: earlier printings of this book had many mistakes in it (including the code) so I'd recommend buying a new printing - or else arm yourself with a pen and plenty of time to hand-insert all the errata from the book's web site.
Highly technical but serves only a certain niche - 2009-02-22
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
I have this book for a couple of years already. I have not simply browsed through the book, but have actually taken the time to utilize the techniques of the typelists in chapter 3 to implement some experiments of my own.
I would have rated this book very highly a couple of years ago, as the technical aspects of the programming were the only things I knew about programming. Now I would not do that. One should not rate a book simply by how technical it is, and in fact, compared to any theoretical book in Physics or Mathematics (where I came from), the degree of difficulty here is zero. It is just more involved than other programming books.
Programming as I know it now, especially application programming, is more about writing a good article and about how to express yourself clearly. Although the techniques presented here in this book are in fact very powerful, they are more suitable for the library builders than the day to day application programmers. In fact the complexity introduced to the day to day programs using these techniques would probably out weight the benefits they bring, and therefore, these techniques are deemed unsuitable.
I would say that this book is a fun read, but do not let yourself lose sight of the big picture of what programming is.
Good explanations, great ideas. - 2009-08-14
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
I had heard good things about this book, and now would agree with almost everything I'd heard. The concepts presented are deceptively simple, but add up to a wonderful new way of looking at some designs for your C++ programs.
Seminal book - 2008-07-06
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
I do not know what to call this magnificent work. An work of art or excellence by Mr Alexandrescu. It is great book, only for typelists chapter, it is worthed to buy. I have no hesitation to recommend to the one who want to learn modern C++ techniques.
Enter the World of Metaprogramming - 2007-10-22
Reviewer Rating: ![]()
![]()
![]()
![]()
![]()
Although this book is now six-plus years old, compilers have finally caught up with the implementation allowing the techniques outlined in the book to be used in production code. Alexandrescu infuses what could be a dry topic with humor, and does a great job of explaining fairly esoteric ideas with enough grounding in concrete implementation to be approachable by a wide range of readers.
The book does a great job of outlining factory classes, which are often given a hand-waving description with no explanation of how to deal with the 'start up' problem of populating the factory with the set of classes it should be creating. This usually leads to lots of boiler-plate, hard-coded linkage between different pieces of the system, but Alexandrescu outlines techniques to automate this process.
If you have been chafing at some of the restrictions imposed by the C++ standard after being exposed to more dynamics languages like Objective C, Ruby, etc., you may find a few tricks that will enable you to achieve your goals.
Top Level Categories:
Programming
Software Engineering
Sub-Categories:
Programming > C++
Software Engineering > Design Patterns
Some information on this page was provided using data from Amazon.com®. View at Amazon >