Home :: Books :: Computers & Internet  

Arts & Photography
Audio CDs
Audiocassettes
Biographies & Memoirs
Business & Investing
Children's Books
Christianity
Comics & Graphic Novels
Computers & Internet

Cooking, Food & Wine
Entertainment
Gay & Lesbian
Health, Mind & Body
History
Home & Garden
Horror
Literature & Fiction
Mystery & Thrillers
Nonfiction
Outdoors & Nature
Parenting & Families
Professional & Technical
Reference
Religion & Spirituality
Romance
Science
Science Fiction & Fantasy
Sports
Teens
Travel
Women's Fiction
Programming Pearls (2nd Edition)

Programming Pearls (2nd Edition)

List Price: $29.99
Your Price: $29.99
Product Info Reviews

<< 1 2 3 >>

Rating: 5 stars
Summary: The how-to for profile-based tuning
Review: 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.

Rating: 5 stars
Summary: The how-to for profile-based tuning
Review: 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.

Rating: 5 stars
Summary: Um grande livro!
Review: 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.

Rating: 5 stars
Summary: wait for insight and THEN start coding
Review: 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.

Rating: 5 stars
Summary: wait for insight and THEN start coding
Review: 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.

Rating: 5 stars
Summary: Best book about how to "think" for software engineering
Review: Great book for those who are interested in the thought that goes behind the problem solving skills that are used by great programmers. Does not matter which language or progamming method you use, this book can teach you something. If all programmers read this book, we would have much better software in this world

Rating: 4 stars
Summary: Back to Basics... Still a Valuable Book
Review: 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"

Rating: 5 stars
Summary: Advice that will never be outdated
Review: 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.

Rating: 4 stars
Summary: Makes a programmer think
Review: I have programmed for 20 years, and there are references in this book older than that. However, this touches on the principles and that can make you think more about how you code and the impact it will have on performance. The writing style of the book can be confusing at times, and that is probably why I would not give this 5 stars. It seems like these were supposed to have been articles in some Computer periodical and put together as a book. If you are looking for a book on programming as a craft this would be a book to own.

Rating: 3 stars
Summary: If you're at all experienced, seek other reading.
Review: I only have 2 years of programming experience. I read an awful lot of programming texts. Right now I have 10 books just on C itself. Not to mention all the java and C++ books... My point to saying this is, if you've already read as many books as I have, this book will do nothing for you. I read this book over the weekend and was just astonished with how simple minded it all was. I constantly said "Duh..." throughout the entire book. The pseudo code in this book was the worst I've ever seen. I have never returned a book before except for "Linux Socket Programming". I returned this one today.

The reason I did give this book 3 stars was because I can see it being extremely great for uneducated newbies. It will teach them a great deal and have them think about efficiency and general good programming practices.

I was amazed at all of the great reviews I saw with this book. Everyone that gave a review must of been new to computer programming. I was personally expecting a few more advanced topics such as real C and C++ code. Not the .... pseudo code that this author insisted on using.

Overall, this is a great book for neophytes. If you're new to programming, get this book and give it a good once over. Don't pay attention to his style though... As he stated in the book, it's due to the constraints on space and the fact he didn't want to write a 1200 page book. However, if you have gotten to the point where you've studied advanced data structures and algorithms and know what a linked list is and a binary tree and you understand the concepts behind a heap, priority queues and such, I'd go for another book that is going to advance your knowledge, not bring it back a step.


<< 1 2 3 >>

© 2004, ReviewFocus or its affiliates