ToDADS: Delphi Informant Review
published: Wed, 18-Jun-2003 | updated: Sat, 20-Aug-2016
(The original can be found here on the DelphiZine site. It was published in the November 2001 issue.)
Shopping for a good technical reference can be a formidable task. And judging them solely by weight, thickness, or number of pages is a great way to take home an expensive doorstop. Once in a while, however, an obvious and easy pick comes along; Julian Bucknall's The Tomes of Delphi: Algorithms and Data Structures is one such find.
The book provides an "all Delphi, all the time" perspective to a wide variety of classic topics. If you're thinking that this theme sounds old, conventional, and potentially boring, don't be misled - the presentation in this book is anything but ordinary.
While some classical texts do tend to be stodgy, Julian Bucknall makes building B-trees, hash algorithms, and linked lists seem like high adventure. Topic development is clear, consistent, and engaging where each paragraph draws you into the next. Once opened, this book is difficult to put down.
There are 12 chapters and 500+ pages covering arrays, lists, searching and sorting, random number generation, hashing, B-trees, queues, state machines, regular expressions, and a very interesting chapter on data compression. While there's just enough history and theory presented to thoroughly ground each topic, the dominant focus of the book is the building of optimized and practical implementations in Delphi.
The book targets an "Advanced" audience, but don't pass it by if you're a Delphi beginner with a basic understanding of OOP. Classical algorithms and data structures are a perfect place to begin building a solid foundation in any programming language. Getting to the next level is always a stretch, but the entertaining and well ordered presentation coupled with the cleanly written examples in this book can be a big help on the path to the intermediate and advanced ranks.
The CD contains the book sources, the author's EZDSL freeware library, and a commercial trialware package. Open any of the source files and you'll find optimally written and lavishly commented code. There's not a component to be found as the library routines are a collection of classes - ideal for building reference implementations and tutorials.
This "lean and mean" approach left something to be desired, however, when it came to the demos, which were packaged mostly as console applications. While DOS-like demos were fine in the days of Turbo Pascal, a top-level GUI would have provided far better support for the Delphi-centric theme of this book. A form and graphical controls would have also worked better with Kylix where the IDE doesn't spawn console apps into a separate shell like Delphi does under Windows. Since I had Kylix configured to start without a command shell, the demos didn't have access to standard I/O and appeared to hang as they waited for keystrokes that couldn't be entered. This was annoying but easily fixed by running startkylix from the command line of an XTerm.
The demos compiled and ran fine under Win32. There were a few minor cosmetic issues under Kylix, and one of the demos couldn't be compiled on either platform due to a missing file on the CD. A note to Julian brought an immediate response and an update to the book's support Web site.
Virtually all of the classical topics in this book have been covered in other books, magazines, and Usenet threads. So why pay $59.95 for information that you can get at the library, download, or cull out of old magazines? Because this book puts it all together, and does so with mastery and a lively presentation. The Tomes of Delphi: Algorithms and Data Structures is a practical, well written, and comprehensive resource. I'm glad it's on my shelf - next to the space where I hope to put Volume 2!
- Tom Lisjac
(Copyright (c) Informant Communications Group, Inc, 2001)