Welcome to Duncan White's Practical Software Development (PSD) Pages.

I'm Duncan White, an experienced and professional programmer, and have been programming for well over 20 years, mainly in C and Perl, although I know many other languages. In that time, despite my best intentions:-), I just can't help learning a thing or two about the practical matters of designing, programming, testing, debugging, running projects etc. Back in 2007, I thought I'd start writing an occasional series of articles, book reviews, more general thoughts etc, all focussing on software development without all the guff.

See all my Practical Software Development (PSD) Pages

picture of D. White


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.
  Programming Pearls: cover image More Programming Pearls: cover image

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 and 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.

Unfortunately, someone borrowed my first cover version, and never returned it. A few years later, I bought the second edition, which 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!


d.white@imperial.ac.uk
Back to my Practical Software Development Top Page.
Updated: 7th Aug 2013