countdown boutiques-francophones Learn more scflyout home All-New Kindle Music Deals Store sports tools Registry

Customer Reviews

4.5 out of 5 stars
24
4.5 out of 5 stars
Format: Paperback|Change
Price:$43.65+ Free shipping with Amazon Prime
Your rating(Clear)Rate this item


There was a problem filtering reviews right now. Please try again later.

Showing 1-10 of 18 reviews(5 star). Show all reviews
on August 24, 2016
Wow, there are so many simple tricks and detailed explanations. Will surely make you a better programmer, regardless of experience.
0Comment|Was this review helpful to you?YesNoReport abuse
on May 8, 2015
This book (together with More Programming Pearls) shares #3 in my all time Top 100 Favorite Programming, Computer and Science books:

http://www.catonmat.net/blog/top-100-books-part-one/

Classic programming book. Jon Bentley knows how to write clearly and enthusiastically about algorithms. This book is timeless and it teaches you how to reason about problems, break them apart, and efficiently implement the solutions. You'll pass the Google interview if you read and understand this book.

I just love the way Jon Bentley writes. I don't know what else to say. These two books really teach the basics of solving programming problems. It takes many years to master the basics in practice but these books teach the basics well. I once wrote a blog post (http://www.catonmat.net/blog/three-beautiful-quicksorts/) about Jon Bentley's chapter in Beautiful Code that he based on a chapter on quick sort in Programming Pearls.
0Comment|Was this review helpful to you?YesNoReport abuse
on November 28, 2014
Needed for college and Amazon had it.
0Comment|Was this review helpful to you?YesNoReport abuse
on December 24, 2003
This book is amazing! Its a true classic on algorithims.
I would place this on my list of the top 5 programming books of all time. A must read for every who calls themselves a "programmer".
0Comment| One person found this helpful. Was this review helpful to you?YesNoReport abuse
on July 27, 2002
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.
0Comment| One person found this helpful. Was this review helpful to you?YesNoReport abuse
on June 8, 2002
for programming to be effective it is to be divided into 3 stages.in the first stage a clear formulation of the problem and the expected perfomance is laid out.inthe 2nd stage a suitable programming language is selected.in the 3rd stage coding is done.bentley stresses the need for search for the context under which the problem can be solved.it requires a cultivated laziness to outline solution ,which is akin to having an insight.there are no sure fire formulae to get this quickly.
0Comment|Was this review helpful to you?YesNoReport abuse
I consider this book a classic. Written in 1986, Bentley engages in some of the best deconstruction and explanation of programming problems that I have ever seen. While it is true that the constraints he discusses are in the distant past, his methods of finding solutions will forever remain part of the programmer's toolbox.
Programmers who have been raised on larger memory units and faster processors tend to ignore concepts such as frugal memory usage and efficient code. When I was a commercial coder, some of the newbies were encountering a bug they could not find. The memory bounds were being exceeded and they simply could not comprehend that they were running out of memory. Forced to fit the data within bounds, it took a great deal of effort to teach them some of the "old-style" techniques of memory management and program efficiency. To prepare for my explanations, I went back and consulted this book to brush up on some of the ideas.
The topics covered are: finding efficient algorithms by solving general problems rather than specific instances, how to verify the correctness of programs, using "back of the envelope calculations" to quickly verify the effectiveness of code, how to squeeze space and some examples of programs. Bentley also refers to the book ,"How To Solve It" by George Polya, a book that should be required reading for all developing programmers.
Bentley is a very good explanatory writer and I can understand why he has received awards for excellence in teaching. Until we develop intelligent robots that will write code for us, the ideas in this book will continue to be useful.
0Comment| One person found this helpful. Was this review helpful to you?YesNoReport abuse
on February 5, 2002
Eu já havia lido os dois volumes da primeira edição, os quais considero de alto nível. A segunda versão está impecável. Tenho usado na preparação de aulas para cursos de graduação e recomendo a sua leitura a todos que se interessam por programação.
0Comment|Was this review helpful to you?YesNoReport abuse
on November 30, 2001
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.
0Comment| 2 people found this helpful. Was this review helpful to you?YesNoReport abuse
on November 7, 2001
this is a thinking man's book. Lots of puzzles to get you thinking about proper data structure design, choice of alrogithm, and optimization. I like how it doesn't 'dumb down' and explain every last detail. Bentley is also an entertaining writer. There are answers to select questions that appear at the end of each chapter.
0Comment|Was this review helpful to you?YesNoReport abuse