Jolt Productivity Award: Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages, by Bruce A. Tate
Ever wonder what the attraction is to those programming languages that have built up ardent followers? Have you wanted to have the time to compare and contrast these languages with a fair and honest approach? Bruce Tate, author of Seven Languages in Seven Weeks, asked these questions and took the time to find the answers. His answers make up this chapter.
Unlike Andrew Binstock's editorial, which condemns books that hope to teach languages to naïve readers in 24 hours, this book proposes only an overview of the languages to give the experienced reader a sense of each language. In this sense, Seven Languages in Seven Weeks offers a tapas of modern language analysis; small portions offering just enough of a taste to decide whether the selection is good enough for a second helping or even a main dish. Each language is presented with its history (along with an interview with its creator); a quick tour of interesting syntax, conditionals, operators, and features; and a summary of the language's core strengths and weaknesses along with author's final thoughts on his experience. You will have to buy the book to find out which languages the author found most to his liking.
Each chapter's introduction begins with the featured languages being matched with popular movie characters:
- Ruby = Mary Poppins
- Io = Ferris Bueller
- Prolog = Rain Main
- Scala = Edward Scissorhands
- Erlang = Agent Smith
- Clojure = Yoda
- Haskell = Spock
These character analogies are spot on, and had a profound effect on orienting my mind on how to interact with the syntax and capabilities of each of the languages analyzed in the book. Personally, the book helped me gain a deeper understanding of Prolog and Haskell, enough to prompt me to warrant a closer look. I have also been tracking Scala closely, and Haskell is one of those "when I'm stranded on a desert island" languages to learn. As for Io, I don't anticipate having a need for that language any time soon, but at least now I know what its strengths and weaknesses are and how to write a simple Io coroutine.
Perhaps the reason for Ruby's inclusion into this exclusive club of languages (with otherwise-limited market awareness/penetration, like Io and Haskell) had to do with Pragmatic Bookshelf's heavy bias toward the language. After all, the majority of Pragmatic's titles are Ruby-centric. For those who are already Ruby fans, this chapter is a wash. As for fans of other popular dynamic languages like Python or Perl, they won't find them mentioned anywhere in the book. However, I contend that anyone who feels strongly about such and such language that didn't get included in the book is missing the point of the author's experiment. This isn't a book about cheering on the winners and sneering at the losers. It's about one developer's quest to understand those languages that are making waves in the computing ocean of established, well-marketed languages like Java and C#.
I enjoyed exploring the insights that Seven Languages had to offer, and I commend the author for taking the time to delve into up-and-comers like Clojure and Scala; doing so helped me decide which of these are worth my time to pursue further. The book offers an engaging travelogue with highlights of what to see and what to avoid. Mr. Tate, who wrote several Java books before undertaking Seven Languages in Seven Weeks, should consider writing a sequel, perhaps "Another Seven Weeks with Another Seven Languages" that will examine another batch of languages, perhaps even those suggested in the book's discussion forum (Ada, PL/I ,and Google's Go for starters).