

Buy anything from 5,000+ international stores. One checkout price. No surprise fees. Join 2M+ shoppers on Desertcart.
Desertcart purchases this item on your behalf and handles shipping, customs, and support to Colombia.
When programmers list their favourite books, Jon Bentleyโs collection of programming pearls is commonly included among the classics. Just as natural pearls grow from grains of sand that irritate oysters, programming pearls have grown from real problems that have irritated real programmers. With origins beyond solid engineering, in the realm of insight and creativity, Bentleyโs pearls offer unique and clever solutions to those nagging problems. Illustrated by programs designed as much for fun as for instruction, the book is filled with lucid and witty descriptions of practical programming techniques and fundamental design principles. It is not at all surprising that Programming Pearls has been so highly valued by programmers at every level of experience. What remains the same in this edition is Bentleyโs focus on the hard core of programming problems and his delivery of workable solutions to those problems. Whether you are new to Bentleyโs classic or are revisiting his work for some fresh insight, the book is sure to make your own list of favourites. Review: The how-to for profile-based tuning - 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. Review: Little book of gems - If you want to learn about the latest web programming frameworks, design patterns, J2EE, .NET, CSS, RoR, etc. then please stay away from this book. Once you think you mastered it all, became a professional programmer with also a nice CS degree under your belt come back and start to read this book for pure pleasure and wisdom. It is with high probability that you'll have both and more than you could have imagined. Bentley's classic work is still relevant but not in ways most programmers will imagine at the beginning. You'll probably never go and write your own search routines and re-implement classical data structures (you'll use the one that comes with the standard libraries of your language of choice) but you'll always meet some problems which will puzzle you with interesting constraints. This is what Programming Pearls is all about. Study the examples for fun and maybe laugh at them for their simplicity but then remember to applied the strong principles in that book to your daily technical problems (programming related or not).

| Best Sellers Rank | #131,482 in Books ( See Top 100 in Books ) #50 in Microsoft Programming (Books) #96 in Software Development (Books) #239 in Computer Software (Books) |
| Customer Reviews | 4.4 out of 5 stars 398 Reviews |
B**R
The how-to for profile-based tuning
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.
E**ร
Little book of gems
If you want to learn about the latest web programming frameworks, design patterns, J2EE, .NET, CSS, RoR, etc. then please stay away from this book. Once you think you mastered it all, became a professional programmer with also a nice CS degree under your belt come back and start to read this book for pure pleasure and wisdom. It is with high probability that you'll have both and more than you could have imagined. Bentley's classic work is still relevant but not in ways most programmers will imagine at the beginning. You'll probably never go and write your own search routines and re-implement classical data structures (you'll use the one that comes with the standard libraries of your language of choice) but you'll always meet some problems which will puzzle you with interesting constraints. This is what Programming Pearls is all about. Study the examples for fun and maybe laugh at them for their simplicity but then remember to applied the strong principles in that book to your daily technical problems (programming related or not).
A**R
Makes you think harder
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.
T**S
nice book
nice book, well printed
A**S
true pearls of programming wisdom
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.
A**R
The best of the best
"Programming Pearls" is far and away my favorite book on programming. If "Code Complete" is the "meat and potatoes" of software books, this is the garnish and the dessert. It's a nonstop litany of fascinating and timeless problems from some of the most interesting years or software. Reading it and tackling the problems is at once a humbling and enlightening experience. Almost all topics covered still apply today, at least in an allegorical sense. I can't recommend it highly enough.
T**G
Reading this book is a chore.
More like a collection of tech essays than a readable book, it's not something easy or quick to read through, you'll find yourself going back and forth between questions and solutions. But there's a lot of great tips on programming and algorithms that will be invaluable in tech interviews. In fact I would suggest this book over other "How to beat the tech interview" books.
A**R
Pearls. Sand and clams included.
"Programming Pearls" is far from a useless book. It is thought provoking half of the time, amazing 20% of the time, useful most of the time. However, computer science has come such a long way since these essays were written, it makes this book seems to be uneven at times, at least in terms of depth. A column in this book is about heaps; if someone doesn't know what a heap is, s/he should probably read any algorithms book instead of this one. In fact, most of the book must be very illuminating at the time it was written; however, almost 30 years have passed since the first edition, and more than ten years for the second edition. What use to be pearls now are mostly folklore and introductory knowledge. If you are bored, or have a special passion for history, or is a philosopher instead of a computer scientist / programmer, pick this one up and read it from cover to cover; if you are not, skim it would give you maybe an afternoon's worth of joy. I read it for several days, but in retrospect, it must be the aged contents which kept me so bored made me slowed down. This book does have the pearls; however, to dig it out, the thick clam meat (which are not so juicy now as it was) and the sand (which use to be pearls to, but now more like white noise) must be taken care of.
M**N
This will change the way you think
This book does require a bit of effort: the first time I picked it up I thought: "I'm way beyond this". But that was mistaken - because although you may feel you are been treated to simple stuff, in reality it is profound. Truly, a book that stays with you for your programming life.
H**U
must read book for any software programmer
i am reading this after almost 12 years, it is a must for any software programmer
J**S
Will surely make you a better programmer, regardless of experience
Wow, there are so many simple tricks and detailed explanations. Will surely make you a better programmer, regardless of experience.
I**I
Excellent !
I have not finished reading it but I really appreciate the format and the content. It is something to read and read again to refresh old knowledge and discover new ideas. Thanks!
A**N
Un fantastico libro
Este libro suele aparecer en listas del tipo "10 mejores libros de programacion" y por muy buenas razones: es realmente una caja de sabiduria y un clasico. Lastima que no se consiga en version digital.
Trustpilot
2 weeks ago
2 weeks ago