Customer Reviews


33 Reviews
5 star:
 (21)
4 star:
 (5)
3 star:
 (2)
2 star:
 (4)
1 star:
 (1)
 
 
 
 
 
Average Customer Review
Share your thoughts with other customers
Create your own review
 
 
Only search this product's reviews

The most helpful favorable review
The most helpful critical review


64 of 66 people found the following review helpful:
5.0 out of 5 stars A course in how to think like an experienced programmer
The thirteen columns in this book appeared in the Communications of the ACM between 1983 and 1985. There can't be more than a couple of technical books on computing from that era that are still worth reading. Kernighan & Ritchie's book, "The C Programming Language", is one that springs to mind; this book is definitely another, and will probably outlast...
Published on June 17, 2000 by Mike Christie

versus
14 of 26 people found the following review helpful:
2.0 out of 5 stars Good topics, flawed presentation
"Programming Pearls" summarizes many important topics in Computer Science, usually in a sub-par manner. About 10% of the book is dedicated to "thinking outside the box," and I'd say these parts really shine. Unfortunately, the other 90% isn't nearly as good. There are inconsistencies in notation, improperly explained terminology, and incomplete analyses. For example, his...
Published on November 26, 2008 by Lance Vambridge


‹ Previous | 1 2 3 4| Next ›
Most Helpful First | Newest First

64 of 66 people found the following review helpful:
5.0 out of 5 stars A course in how to think like an experienced programmer, June 17, 2000
By 
This review is from: Programming Pearls (2nd Edition) (Paperback)
The thirteen columns in this book appeared in the Communications of the ACM between 1983 and 1985. There can't be more than a couple of technical books on computing from that era that are still worth reading. Kernighan & Ritchie's book, "The C Programming Language", is one that springs to mind; this book is definitely another, and will probably outlast K&R as it has almost no ties to existing or past hardware or languages.

What Bentley does in each of these columns is take some part of the field of programming--something that every one of us will have run into at some point in our work--and dig underneath it to reveal the part of the problem that is permanent; that doesn't change from language to language. The first two parts cover problem definition, algorithms, data structures, program verification, and efficiency (performance, code tuning, space tuning); the third part applies the lessons to example pseudocode, looking at sorting, searching, heaps, and an example spellchecker.

Bentley writes clearly and enthusiastically, and the columns are a pleasure to read. But the reason so many people love this book is not for the style, it's for the substance--you can't read this book and not come away a better programmer. Inefficiency, clumsiness, inelegance and obscurity will offend you just a little more after you've read it.

It's hard to pick a favourite piece, but here's one nice example from the algorithm design column that shows how little the speed of your Pentium matters if you don't know what you're doing. Bentley presents a particular problem (the details don't matter) and multiple different ways to solve it, calculating the relationship between problem size and run time for each algorithm. He gives, among others, a cubic algorithm (run time equal to a constant, C, times the cube of the problem size, N--i.e. t ~ CN^3), and a linear algorithm with constant K (t ~ KN). He then implemented them both: the former in fine-tuned FORTRAN on a Cray-1 supercomputer; the latter in BASIC on a Radio Shack TRS-80. The constant factors were as different as they could be, but with increasing problem size the TRS-80 eventually has to catch up--and it does. He gives a table showing the results: for a problem size of 1000, the Cray takes three seconds to the TRS-80's 20 seconds; but for a problem size of 1,000,000, the TRS-80 takes five and a half hours, whereas the Cray would take 95 years.

The book is informative, entertaining, and will painlessly make you a better programmer. What more can you ask?

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


80 of 85 people found the following review helpful:
5.0 out of 5 stars The Pearls Still Glitter After a Decade, March 2, 2000
This review is from: Programming Pearls (2nd Edition) (Paperback)
Without any doubt, my favorite article in _Communications of the ACM_ in the 1980's was the regular `Programming Pearls' articles by Jon Bentley. When the first edition of these collected gems was published, I read it with great delight. Now, over a decade later, a second edition has been published, containing the same problems with additional modifications and notations. Given the enormous changes in programming since the mid 80's, your first reaction might be that this book is dated and therefore irrelevant. Nothing could be further from the truth.
Elegant solutions to complex programming problems are free from the rot of time. Programming is a thought process largely independent of the notation used to write it down. The solutions are sketched and explained rather than coded, and the solutions are complete. There is a certain mystique about taking a complex problem, finding an initial solution and then refining it down until it kicks some big time. There are some major lessons in program refinement explained in these solutions.
Coding a binary search is covered quite extensively, which may seem like a waste of space, as this problem was solved decades ago. However, that solution took decades to get right, and this is one of those "separates the coders from the key bangers" type of problem. Other problems examined include performance tuning, squeezing space and program correctness. While the improvement in the performance of the hardware has been astounding since these solutions were written, that does not make them obsolete. The complexity of the programs that we now build has risen even faster, so performance and space considerations are just as critical.
Some problems were here at the beginning and will still be here at the end. Even though there may be canned code to handle them, these problems are generic enough that the solutions can be applied elsewhere, so we must learn how to solve them. Understanding these problems and their solutions will give you a fundamental skill set that will serve you well for a long time.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


24 of 28 people found the following review helpful:
5.0 out of 5 stars The how-to for profile-based tuning, July 27, 2002
By 
This review is from: Programming Pearls (2nd Edition) (Paperback)
Bentley's classic, "Programming Pearls", makes an important point, namely that you won't get good performance without careful coding and profile-based tuning. And it's made clearly, concisely and with compelling examples. The choice of language (C), and the choice of problems (those from computer science 101 we all think we know cold) betrays the sophistication of Bentley's analyses.

Suppose, for the sake of argument, that you have a binary search that's holding up your loop. Or your Huffman coding just isn't snappy enough? "How is that possible?", you might say, fresh out of computer-science 201, "Didn't we just prove these algorithms are optimal?" Well yes, asymptotically up to an arbitrary constant multiplier. But this is the real world, and your code needs to go faster. If this sounds like your predicament, pull up a chair and read "Programming Pearls"; if it's not, you might wonder what all the fuss is about.

Next, fire up your favorite hardware (Sparc or x86 or PowerPC), favorite language (Perl, Java, or even C), favorite release of that language, along with your favorite interpreter or compiler (Hotspot or standard? GCC or Visual C++). And you'll need a profiler; might as well treat yourself to a good one if you're serious. Then fire up your code with a representative range realistic test data and observe what happens. Function by function, byte by byte. Then try to be as clever as Bentley in (a) figuring out why, (b) trying a range of alternatives, and (c) making it all go faster with minor tuning. Typically, you'll find a single bottleneck taking an order of magnitude more time than everything else, and work on that. Repeat until fast enough.

As well as this simple, yet surprisingly effective and realistic methodology, Bentley provides a range of concrete tips on making things go faster, from tweaking data structures to unfolding loops (especially precomputing low-order cases) to using accumulators and caching, all with an eye to underlying memory, communication and CPU resources.

Real code that has to run fast, like the code that we write at my current company for signal processing, speech recognition and speech synthesis, typically looks like the end-product of Bentley's refactorings. And it gets that way following exactly the path he lays out: analyze the problem, choose the right algorithm (or the right few to evaluate), and then tune it up using profiling.

"Programming Pearls" is the beginning of the road. You will need to look elsewhere for topics such as compression for memory saving, numerical algorithms, effective concurrency and memory sharing, efficient buffered I/O, garbage collection, and the wide range of dynamic programming and heuristic techniques.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


10 of 11 people found the following review helpful:
4.0 out of 5 stars Makes you think harder, August 19, 2004
Amazon Verified Purchase(What's this?)
This review is from: Programming Pearls (2nd Edition) (Paperback)
Programming pearls is a compendium of 15 columns previously published in Communications of the ACM. The columns cover a wide range of topics related to programming: from requirements gathering to performance tuning. The focus is primarily on coding techniques and algorithms.

Each column has been reorganized as a chapter. Chapters usually start with the presentation of a practical problem. Then various solutions are presented and are used as lessons to be learned. The writing style is clear and fun.

Programming Pearls is not a usual book teaching new programming concepts. Although it contains good and sometimes quite novel ideas, the aim of the book is not to teach something new. For example, the search and sort algorithms presented are well-known. The aim is to remind programmers to think hard before starting writing code. The book has great chapter on back-of-the-envelope computation for example which is useful when comparing various solutions. The easy solutions to the column's problems are usually very slow. The `good' solutions are lightening fast but require thinking hard about the problems. I would recommend having a book about algorithms nearby when reading Programming Pearls.

The book is full of little (and some not so little) exercises that are given throughout the chapters. Solutions or hints are given at the end. The exercises usually take a few hours to do properly and are a great resource. Again the emphasis is on making the reader think.

If you consider programming a repetitious activity, Programming Pearls will provoke you into thinking harder about finding elegant solutions. I recommend this book.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


9 of 10 people found the following review helpful:
5.0 out of 5 stars A classic that will always be readable, November 30, 2001
By 
This review is from: Programming Pearls (2nd Edition) (Paperback)
This book is timeless because it discusses recurring problem situations with elegance, clarity, and insight. The book is about thinking and problem-solving more than it is about the particular circumstances it discusses.

For instance, the very first chapter ("Cracking the Oyster") would seem to be about the problem of sorting on disk: surely an archaic concern in these days of 1+GB RAM and 100 GB online media on PCs. But that would entirely miss the point, which Bentley clearly summarizes for us in the "principles" section of this chapter:
* "Defining the problem was 90 percent of this battle..."
* Select an appropriate data structure
* Consider multiple-pass algorithms
* A simple design: "a designer knows he has arrived at perfection not when there is no longer anything to add, but when there is no longer anything to take away." -- St. Exupery

This advice might look like a string of old, worn-out chestnuts as set forth above. But within the context of the specific problem, we can see how the design challenges and solutions follow each other, through several iterations, culminating in a pretty solution, nicely illustrating the principles, and suggesting their relevance to other problems, too.

A thoughtful programmer, no matter whether her domain is machine language or OODBMSes, will come away from any chapter in this book full of new ideas and inspiration.

Problems (good ones) after each section encourage the kind of rumination that is necessary to derive the most from this book. Every few years I take it (and its companion, "More Programming Perals") off the shelf and dip into it again, and always come away enlightened.

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


3 of 3 people found the following review helpful:
5.0 out of 5 stars Neat Ideas, September 10, 2009
This review is from: Programming Pearls (2nd Edition) (Paperback)
At first I didn't enjoy the book. However, the more I read it the more I find neat little things (pearls!!?!). I find that I can dive in anywhere and just get lost there. I'm just a programmer and not a computer scientist. I very much appreciate the ideas I'm finding here.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


5 of 6 people found the following review helpful:
5.0 out of 5 stars Utterly essential to read and re-read, October 16, 2008
By 
This review is from: Programming Pearls (2nd Edition) (Paperback)
I have a (very) short list of books that I re-read annually. This is the book at the top of my list.

I am a professional software developer working within the world's largest software company. I work in amongst (BY FAR) the most incredible software engineers on the planet. One of the things that I enjoy the most about working with the people around me is range and depth of experiences that are applied to solving a given problem. Oftentimes, the best solution is not the most obvious.

That's why I re-read this book every year: it's a short, easy-to-read reminder to think laterally about a given problem and to deconstruct a problem as much as possible before attacking it.

I first read this book back in 2000 whilst stood in a bookstore. I instantly wondered why Jon hadn't written it before.

Creative thinking is something that we all too often forget when we toil daily on our code, trying to make it more feature-complete, faster, more secure and more stable. Sometimes one needs to take a step back from the problem and consider things with a more open mind that may result in having to write less code overall, or to write just a little more code to completely transform the operational performance of a given routine. This book regularly reminds me how to do that.

I cannot recommend this book highly enough - absolutely essential reading for all developers - old and new - regardless of your chosen language / platform / toolset.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


7 of 9 people found the following review helpful:
4.0 out of 5 stars Back to Basics... Still a Valuable Book, April 25, 2004
By 
mrc "mrc" (CUPERTINO, CA United States) - See all my reviews
Amazon Verified Purchase(What's this?)
This review is from: Programming Pearls (2nd Edition) (Paperback)
I bought the 2nd edition of the book.
This book takes you to the Basics of Programming: Problem definition, Algorithm design , choosing the correct data structures, Assertions, Performance considerations during Design and coding, Code Tuning, Squeezing the space.

Though the examples are mainly based on searching and sorting and other primitive programming problems, the fundamental concepts and conclusions at the end of each column, are still valuable and hold true as they are 2 decades ago.

The examples and the exercises are challenging and enjoyable. But, don't expect things related to modern programming like related to High Level Programming languages or Databases, this is purely a Basics book focussing on techniques of solving the problems the simplest and the best way.

Some of the gem quotes or conclusions from the book are:

"Coding skill is just one small part of writing correct programs. The majority of the task is problem definition, algorithm design and data structure selection."

"Defining the problem is about ninety percent of the battle"

Characteristics of a good Aircraft(or a good program) - "Simple, few parts, easy to maintain, very strong"

"A designer knows he has arrived perfection not when there is no longer anything to add, but when there is no longer anything to takeaway."

"Good programmers sit back and wait for an insight rather than rushing forward with their first idea"

"A proper view of data does indeed structure programs. Before writing code good programmers thoroughly understand the input, the output and the intermediate data structures around"

Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


2 of 2 people found the following review helpful:
5.0 out of 5 stars Must read, September 14, 2008
This review is from: Programming Pearls (2nd Edition) (Paperback)
One of the must read for S/W Engineers. These essays make you really think and teach you basics of s/w development. I also liked the exercises under each essay. I found it difficult to read this book in one go but I read this book almost twice. And every time I read this, I learn something new!
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


4 of 5 people found the following review helpful:
5.0 out of 5 stars true pearls of programming wisdom, June 15, 2008
By 
Amazon Verified Purchase(What's this?)
This review is from: Programming Pearls (2nd Edition) (Paperback)
If this book doesn't get you excited about programming, I don't know what will. Bentley writes about programming problems that are as glamorous as hollywood. The collective wisdom of the Bell labs super-stars shines through in the background information and problems which the author picked.

I went back and read some of the columns from the ACM magazine which this book originated from. The book is definitely more up-to-date and readable.

I cannot over-emphasize the value of trying out the problems in the book without cheating and looking at the answers or hints. Great way to prepare programming interview questions, whether you're an interviewer or interviewee.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No


‹ Previous | 1 2 3 4| Next ›
Most Helpful First | Newest First

This product

Programming Pearls (2nd Edition)
Programming Pearls (2nd Edition) by Jon Louis Bentley (Paperback - October 7, 1999)
$39.99 $26.38
In Stock
Add to cart Add to wishlist