Author: Bruce Tate
Publisher: Pragmatic Bookshelf, 2010
Aimed at: Language enthusiasts
Pros: Sets out to compare several languages
Cons: Lacks depth and irritating style
Reviewed by: Mike James
This book has an ambitious aim - but can it deliver in practice?
If you are a interested in languages then there is no doubt that this book should be on your reading list, but be warned it is far from perfect. It is a tour of seven languages with each in theory taking a week to look at - of course the time is theoretical and you can read as fast or as slow as you like.
The idea is good but this sort of book can't help but cause controversy. For example the choice of languages would keep any group of language enthusiasts arguing for more than seven weeks. The languages covered are: Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell.
You could have argued that Python would have been a better choice than say Ruby or Scala. On the other hand why not C# as an example of a rapidly evolving pragmatic language. You see what I mean - you don't even need a group of language enthusiasts to start an argument - one will do.
The book follows a standard format with sections labeled day 1, day 2 and so on. The initial introduction is very simple - at the level of showing how to store things in variables and do a calculation. Later things get more complex and the level ramps up fairly quickly. I found that it was difficult to see the wood for the trees in many places and a better guide to the language would be to attempt to characterise its special features and draw your attention to how it fits together. My guess is that this would need several authors with a much deeper understanding of how each language works in practice.
However, this said the descriptions do draw attention to the theory behind each language. An interview with an experienced user or, better, the creator of the language is also included. All of this is good but it could have been much better with a more comprehensive overview that explained the principles behind the language and illustrated the point with examples. A more compare and contrast approach might also have helped. As it is, the overall effect is of a whistle stop tour that never really stays long enough anywhere to give you the unique flavour of the language.
The biggest problem with this book for me, however, is the author's style. It attempts to be readable by making references to popular culture - mostly to cult or at least well-known films. This device is ok for the first few pages but it quickly becomes irritating and artificial. To associate Prolog with the main character in Rain Man is mystifying if you have seen the movie and it must be even more so if you haven't. You might disagree.
Overall I found the book worth reading but very irritating - for its style and for what it didn't achieve. There are few books that even attempt to give you some idea of as many as seven languages and so this book has a value. If it had only discussed some of the desirable properties of languages and had some background in the theory and design of languages it might have achieved so much more.
Rather than being a language "travel book" it's just a tourist guide.