Spotlight customer reviews:
|
Customer Rating:      Summary: Fascinating collection of case studies Comment: I found this to be a fun, thought provoking book. It is a large collection of essays by various leading software developers each providing examples of their ideas of what makes code beautiful. Examples cover a wide variety of languages from c to ruby, and a variety of perspectives on what makes code 'beautiful.' The essays cover a good mix of old and new, ranging from regular expression matchers to the FIT testing framework. With such a wide variety of perspectives I doubt anyone can say they agree with everything in this book, but each author's view is worthy of thought and consideration.
Customer Rating:      Summary: Performance, not beauty Comment: Everybody in my office is reading this book, so I borrowed a copy. It's mediocre. Most of the articles conflate performance and beauty. So far I have read about eight of the articles and only two have been beautiful at all. The first is "Correct, Beautiful, Fast (In That Order): Lessons From Designing XML Verifiers". The code in that article is readable, well designed, and fast. The second decent article is "Subversion's Delta Editor: Interface as Ontology". Again its code is readable and performant. This article still isn't very interesting. It describes an application of the Visitor pattern to implement a variety of operations on tree structures that need to be efficiently transmitted over the network. Anyone who has read "Design Patterns" by Gamma et al will be familiar with this technique. Some of the other code presented in the book is very ugly. "The Quest for an Accelerated Population Count" takes a simple for loop and turns it into a handful of opaque bit-by-bit operators. Yes, it is very fast. Yes, I can understand the code if I examine it closely. No, it is not beautiful at all. I also suspect that Jon Bentley's article is essentially a re-print of a "Programming Pearls" column. In summary this book doesn't contain much beautiful code, and if you want to write better code go read Gamma, Fowler, or Goetz.
Customer Rating:      Summary: A fantastic book for any programmer Comment: Any experienced programmer can tell you that there is a huge difference between code, good code, and beautiful code. The ability to find the simple, elegant, clever, and most of the time, non-obvious solutions to daunting problems is what separates expert programmers from their peers. This book is really a collection of essays by famous names in the programming world, all describing how they solved a particular problem with a little bit of 'beautiful code'. With over thirty contributers, there is quite a bit of material here - and with names like Brian Kernighan and Karl Fogel, you know the material is worth reading.
Firstly, I want to mention how impressed I am with the design of the book. This is the first O'Reilly publication, and really, first programming book, that I would describe as having a beautiful design. A lot of thought went into the book design, and it shows. Typeface, whitespace, layout, diagrams, organization - it all comes together to form a text as beautiful as the topic that it covers. This text has raised the bar regarding style, and I hope O'Reilly takes some of the successes of this style and includes them in future works.
Because there are over thirty authors in the text, it is hard to talk about the writing itself. However, I will say that there wasn't a single essay that I found poorly written. Unlike most other programming texts, the authors in this book know both their material and how to communicate it effectively. The editors, Oram and Wilson, did a fantastic job putting the essays together and making sure they flow.
Each essay is presented as a personal work of that particular author. Each one has a unique tone, writing style, and approach. The result is that each essay feels more like a one-on-one discussion with the programmer about how a certain problem was solved instead of a textbook chapter covering an particular programming lesson. Within each chapter, you will get little bits of insight into the author through the writing, and I found this almost as interesting as the topic itself. The pieces of humor and side notes that the authors spread through their writing add a fun flavor to the book, and you really get a sense that the authors enjoy what they are doing and are passionate about sharing it with others.
I was also very happy with the liberal use of diagrams and code examples. Not including diagrams and images in textbooks is a pet-peeve of mine, and I was elated to find that nearly every essay in the text uses them extensively.
The final topic that I want to talk about is the code itself. Unsurprisingly, the text is fantastic in this regard. The authors do an excellent job of only showing you the code that you need to see to follow what they are saying, and they try to keep it clean and simple. This isn't to say that there isn't a lot of code in the book - in fact, it is quite the opposite. There is a huge amount of code in the text, but it is presented and discussed in small bits to keep it from becoming overwhelming. Larger chunks of code are well commented, and the code is always stylistically sound and easy to read.
For the most part, the code steers clear of discussions that require knowledge of advanced programming topics. Obviously, someone who is just learning to program will have a lot of trouble following the code, but anyone with a firm grip on fundamental programming strategies and topics shouldn't feel like the code is over his/her head. The book is about thinking like the experts, not learning raw programming topics from them.
The only difficult aspect of the code is the sheer number of languages. The authors all come from different backgrounds, working in different environments, with different platforms - so of course most of them are using different tools to get the job done. If the programming language that the author is using has a syntax and notation that might be confusing to people unfamiliar with the language, the author generally tries to provide a quick run-down on how to read it. However, I found that some of the examples, when I didn't know the language involved, were very hard to
follow, and I had to follow the discussion more than the code itself. This was rare, however, and since the discussion of what thought-process enabled the author to write the code is really the meat of the essays, wasn't too big of a deal when it did happen.
Some of the authors used a bold typeface for important lines of code, and I found this to be extraordinarily helpful in some situations. In future editions, I would recommend that every author use this strategy to make the larger code blocks easier to sift through for important information.
This text is a fantastic piece, and is really a work of art. With so many high-quality authors coming from so many different fields, backgrounds, and cultures, it isn't surprising that this book is a joy to read. There is great insight in the writing, and great lessons to be gleaned from each chapter. I heartily recommend this book to anyone who wants to learn how to bea more clever programmer, or to anyone who simply appreciates intelligent and beautiful solutions to extraordinarily challenging problems.
Customer Rating:      Summary: Expand Your Thinking Comment: Some code is over my head, or from languages I don't use. Even so, every article I've read had at least one gem that helped me "think different" about how I code. Don't look to this book for specific examples, or as a reference, but for a brain massage that will let you break away from old standby solutions. Lots of my computer books end up on the shelf, forgotten, after just a few days, but this one's been out on my desk for weeks. I dip in when I need change of direction.
Customer Rating:      Summary: Any programmer involved in software engineering or design will welcome this Comment: Andy Oram and Greg Wilson edit BEAUTIFUL CODE: LEADING PROGRAMMERS EXPLAIN HOW THEY THINK, a unique collection of master classes in software design which will prove perfect not just for computer libraries, but for classroom assignment and independent study. Nearly forty master coders reconstruct project creation and coding challenges, considering basic best practices and times when rules must be bent or broken to achieve results. Any programmer involved in software engineering or design will welcome this survey of how the best coders think.
|
|
|