Hi there! I'm Duncan White, an experienced professional Unix programmer.
Welcome to my Practical Software Development (PSD) pages.
PSD: Duncan White's Practical Software Development Pages
Book Review: Programming Pearls (and More Programming Pearls).
Authors: Jon Bentley, AT&T Bell labs Publisher: Addison-Wesley, Inc., 2000. ISBN: 0-201-65788-0. ![]()
![]()
Jon Bentley is one of my favourite computing authors, and another excellent member of AT&T Bell Labs, who worked alongside such luminaries as Kernighan, Ritchie, Pike, Stroustrup for many years.
Programming Pearls grew out of his long running Programming Pearls column in the Communications of the ACM, and focusses on solving and optimizing real world problems that have irritated and puzzled his colleagues. As an oyster grows a thing of beauty (a pearl) around an initial irritation (a grain of sand), his columns explore many deep ideas of computer science - algorithms, data structures, design, program correctness, testing, debugging, optimization etc - all in a very practical and focussed way.
I first read the lovely (black cover) first edition of Programming Pearls in the late 1980s, and was very impressed by the dry humour and gentle wit with which Bentley guides you into each problem, and how he then unpacks it carefully and clearly investigates all the alternatives. He includes lots of working (and non-working) C code for you to try, and adds an extensive set of problems to each chapter for you to think about yourself, and sometimes adds a sidebar where another of his colleagues came up with an even better algorithm or solution to a cool problem.
The second edition is rather larger, adding lots more C++ examples which tend to add clutter (you can tell I'm not a huge C++ fan), but also adding a new chapter and usefully expanding some of the other columns.
Bentley is particularly strong on practical algorithm design and optimization (part 2 of the book), emphasizing how much the choice of algorithm and data structure (and especially how you choose to implement your data structure) can overwhelm all other changes, how code profiling is essential to guide useful optimization, and how flexible you need to be while optimizing and analyzing your optimizations (he switches repeatedly and fruitfully from tabular to graphical output during his analyses).
In the imaginatively entitled sequel (More Programming Pearls, subtitled Confessions of a Coder), Bentley continues in similar vein, adding welcome themes on building tools and little languages to help you add run-time flexibility to your programs (I'd have welcomed even more columns on this), and also on prototyping and visualizing complex data by means of many sets of graphics (mostly generated, naturally, via little languages - pic and grap - which Bentley invented).
In summary, all programmers and designers should read (and reread periodically) both books; I guarantee that you'll learn a lot and have a lot of fun doing so!
dcw@doc.ic.ac.uk Updated: 8th Feb 2011