热度 18
2012-4-13 21:16
2496 次阅读|
2 个评论
I must admit that I am overwhelmed with admiration for the way in which John MacCormick tackled his book Nine Algorithms That Changed the Future: The Ingenious Ideas That Drive Today's Computers. Of course, it's no surprise that computer science is replete with algorithms for all sorts of things. Consider a relatively simple undertaking like sorting things, for example... perhaps we wish to sort a list of names into alphabetical order, or a list of numerical values into ascending size. In this case, there are textbooks that will present you with so many different types and permutations of algorithms that it will make your eyes water. A quick glance at the Wikipedia page on Sorting Algorithms , for example, immediately presents us with a bunch of popular contenders: - Bubble Sort - Selection Sort - Insertion Sort - Shell Sort - Comb Sort - Merge Sort - Heapsort - Quicksort - Counting Sort - Bucket Sort - Radix Sort - Distribution Sort - Timsort And don't even get me started on some of the more esoteric entries like the Cocktail Sort, Gnome Sort, and Patience Sorting. Or how about the Bogosort, which is based on luck (randomly permute the array and check to see if it's sorted), or the Slowsort, which provides a remarkably inefficient form of the selection sorting algorithm. Actually, I would like to mention that the Wikipedia Page on the Bubble Sort provides the best visual representation of how this form of sort works that I've ever seen. Arrggghhh... as usual it's a case of "wind me up and watch me go" because none of the above is in any way relevant or related to Nine Algorithms That Changed the Future . What the author has done is to focus on a small number of revolutionary algorithms that the vast majority of computer users come into contact with every day without even knowing or thinking about it. When we perform a web search using Google, for example, the search engine returns a handful of relevant results culled from the billions of pages on the web. If you were to instigate a search on "The evolution of color vision" , for example, you would discover that my paper Color Vision: One of Nature's Wonders appears on the first page. How is it possible for the Google search engine to recognize the genius behind my humble offering and to return such amazingly relevant (and – in this case – incredibly self-serving) results? This book tells the tale. As another simple example, uploading a photo to Facebook involves millions of pieces of information being transmitted over numerous error-prone network links, yet somehow a perfect copy of the photo arrives intact. How can this be? Once again, this book explains all. One of the best things about Nine Algorithms That Changed the Future is that it is of interest to computer professionals and innocent bystanders (non-professionals) alike. The author doesn't attempt to "baffle us with science" or blow us away with his mathematical prowess. Instead, he employs simple analogies that we can all understand. His use of mixing colored paints to explain the machinations of public key cryptography is, frankly, brilliant. For myself, I have to say that I learned a lot of stuff I didn't know, including some of the algorithmic tricks associated with error-correcting codes, data compression, and pattern recognition. In the discussions on databases, for example, the author explains concepts like two-phase commit, rollbacks, and transaction logging, all of which are vital to ensuring data integrity and maintaining the functionality of the database. Although I was vaguely aware of a lot of this stuff, I didn't really understand the nitty-gritty details (I probably still don't, but I know a lot more than I did before reading this book ). Should I happen to fall through a time warp and appear in the 1950s, all I have to do is remember these database tricks and techniques to ensure that I become rich beyond my wildest dream. As usual, I could waffle on for hours, but the bottom line is that I highly recommend this book as a very enjoyable read that will be of interest to anyone who would like to understand more about the way in which the computer systems we use every day perform their magic.