Top critical review
Do NOT buy this book without actually reading a chapter or
on July 18, 2003
two -- very carefully -- in a bookstore. I'm afraid you'll be disappointed. You will be tempted to buy it at first because the book is well made -- it's cute to look at, printed on acid-free, thick paper, font selection is very good, pleasing and clear. Don't fall for these mechanical attractions! Evaluate the contents.
It's truly not a book; it's more of a collection of perfunctory commentary to some source code on the disk (of unknown quality and/or usefulness.) The writing is mostly abhorrent (with the exception of the sections written by LaMothe and another guy whose name escapes me at the moment; Lamothe is good and can write, not only program); a lot of stuff is simply not explicated, the selection of the actually printed code is haphazard and unhelpful vis-a-vis the text. Since the quality and usefulness of the stuff on the disk is anyone's guess as well (and based on the text, it's nothing awesome), I don't think this book deserves the acclaim that it seems to get.
Several chapters are wasted on annoying bs about hungarian notation, development process (a la Code Complete), absolute banalities about using STL (very superficial, w/o any linkup with games programming -- just buy an STL book if you need to learn it, you won't get anything out of the Gems book itself.) There's a section on templates where the writers seemed more concerned with hugely impressing the reader with the supposedly latest-and-greatest template tricks than offering something useful (look for matrix classes -- they propose the stuff as some kind of generic mechanism (thus, templates), yet what they do will be totally useless for more than 3x3 matrices, and those can be simply coded manually if you need this kind of optimization, which is inlining and unrolling, really -- and keep in mind that it's only small loops that can be gainfully unrolled coz if it doesn't fit in the cache... you know where I'm getting to... moreover, with branch prediction, normal loops may perform better than when unrolled; at any rate, a regular, less-fashionable approach could result in simpler code; but they gotta show off their templatizing skill, wow, I'm impressed, another piece of pompous nonsense suitable for the C++ Report... too bad it's useless practically for 4-and-above dimensional matrices. Generality that doesn't apply generally... an overdesigned particular case, that's what it is.)
Most other chapters are written in a very typical halting, disjointed, and ungrammatical geeky-speak, and I don't mean terminology or technicalities, I mean an irritating inability of most contributors to organize and articulate their thoughts. Like I've already mentioned, it's printed on thick paper, if printed on normal paper, it'd be half the size. The binding is not good, my copy has already fallen apart, and it's not that I use it all the time.
The only potentially fruitful side of this book is bibiography; iow, you can use it as an catalogue of diverse methods used in programming, and when you're interested in something, follow the bibliography in order to really learn about the topic. The bibliography is fairly extensive, obviously recent; includes many web-sites with papers, etc. So that's good of course.
Overall though, the book is mediocre and too expensive for what it is. I would't buy it for more than $. 'course I've already bought it for more, but you don't have to. My opinion is, it's a clear thumbs down.