|Don't ask to ask, just ask|
Mastering Algorithms with Perl by Jon Orwant, Jarkko Hietaniemi & John Macdonald
Copyright 1999, O'Reilly & Associates, Inc.
Excellent book. 5 stars out of 5.
Who should be interested in this book?
As soon as I heard that this book was coming out, I started counting the months until its publication. Because, you see, I had a secret shame.
I've always learned best by looking at examples, playing with them, and tweaking them until I knew how they really worked. Pure theory tends to bore me. Either that, or it goes over my head. Pick your excuse.
For this reason, I avoided certain classes in college -- the ones that dealt a lot with theory and didn't require much, if any, programming. Give me a programming project, and I can make A's. Grade me strictly on tests and quizzes, and I'll get C's. So... I can finally admit it now... I weaseled out of taking the Algorithms class.
I graduated from college knowing very little about algorithms other than what I'd picked up in other classes. I wanted to learn all that nifty stuff -- efficient sorting algorithms, approximate string matching, graph traversal. All of it was important. I knew that. But pseudo-code just wasn't good enough, and things like algorithms books tend not to be targetted at a specific language.
So, I was very excited when Mastering Algorithms with Perl hit the shelves. All the stuff I'd wanted to learn, and in the form from which I learn best. Code! And lots of it! As with most, if not all, O'Reilly books, all the examples in the book are on the O'Reilly web site. Download it and run it. Don't understand how it works? Stick in a few prints until you do. Change the computation of the shell size in your shell sort to see what happens. What FUN!
Mastering Algorithms covers all the high points -- sorts, graphs, data structures, number theory, cryptography, statistics, and more. All with a plethora of examples, and with references to the seminal works from which this book was derived. And, as we've come to expect from O'Reilly, presented in a professional and readable style.
So, is there anything wrong with this book? I'm reluctant to say one way or the other. I've had to read a lot of it over two or three times before understanding it, even with the examples. But I'm inclined to think that that's more a function of the complexity of the material being presented, rather than the fault of the authors. They really do a very good job of explaining everything. And, of course, the examples are superb.
So, in summary, if you find Knuth to be a bit heavy, either figuratively or literally, you should pick up a copy of Mastering Algorithms with Perl. Well worth the price, in my humble opinion.