Dr. Dobb's Journal February 2002
A couple of years ago, I read and reviewed a book called Applying Use Case Driven Object Modeling with UML, by Doug Rosenberg and Kendall Scott. It was a good book a very good book about those bits of the Unified Modeling Language (UML) that are actually useful to most programmers, and how best to use them. My biggest criticism of it was that it was too short: As I said in my review, I really wanted a dozen examples of each point to work through.
Well, guess what? Not only did Rosenberg and Scott write that book, they also quoted my complaint in its "Introduction." Unlike its title, Applying Use Case Driven Object Modeling with UML: An Annotated e-Commerce Example is short and sweet. The authors use the analysis and design of a simple online bookstore to show which parts of the UML notation should be used when and why. The book's eight sections interleave brief summaries of material from the first book, "Top 10 Mistakes" lists, and "fix the errors" exercises. The writing is crisp, the examples are to the point, and the layout is clear. Together, this book and its predecessor are the best introductory texts on applied object-oriented analysis and design I have seen to date. I can hardly wait for the next one (hint, hint).
Rene Alexander and Graham Bensley's C++ Footprint and Performance Optimization didn't impress me as much, although it does contain a lot of useful information in the book. Chapter 9, for example, is a good (though brief) look at memory fragmentation, the performance problems it can cause, and what programmers can do about it. Similarly, Chapter 12 looks at the speed of various techniques for text and binary I/O, and explains where some of the differences come from.
So why did I come away feeling a bit disappointed? Partly it was the writing style: Far too many simple points are made using unnecessarily large words, and in the passive voice. Mostly, though, it was that the discussion often stopped just as it got interesting I would much rather have had a book that covered less ground, in more detail. Now that Jon Bentley's Writing Efficient Programs is out of print (and out of date), there's a real need for a practical, readable book on the subject. With tighter editing and more focus, this book could fill that gap, but as it stands, it's one to borrow, not buy.
Fredrik Lundh, author of Python Standard Library, has been a frequent contributor to comp.lang.python, and to Python itself. This book combines an overview of the libraries that come in the standard Python distribution with a host of small examples of how those libraries can be used. By the time I was in Chapter 3, I was scribbling "Use this!" in the margin of every second or third page.
Unfortunately, by the time I was in Chapter 9, I had mostly stopped making notes. Like Beazley's Python Essential Reference (reviewed here in August 2000), and like Python's own documentation, this book's examples grow thinner as the topics themselves grow harder. This may be inevitable TCP/IP networking is a book in its own right, for example but once again, I came away feeling that if the book had tried to cover less ground, it might have delivered more value.
Gerald Jay Sussman and Jack Wisdom's Structure and Interpretation of Classical Mechanics shares both its title and its approach with Abelson and Sussman's classic Structure and Interpretation of Computer Programs, which was for many years the standard introductory computing text at MIT. However, SICM seems aimed at sophomore physics students with a solid programming background.
The first chapter of SICM starts with the words, "The subject of this book is motion and the mathematical tools used to describe it." Over the next 500 pages, the authors explore the mathematics behind a variety of classical and chaotic systems. Short Scheme programs are mingled in with text and formulas to create a dense, but seamless, whole. The subject matter may not interest most programmers, and the mathematics can get pretty scary, but SICM is an excellent example of how computational science is at last taking its place as an equal beside theory and experimentation.
DDJ