Seven Languages in Seven Weeks

I recently read “Seven Languages in Seven Week” [Pragmatic, Bruce Tate, 2010], and found it very interesting. This is not a book about spoken languages, but computer languages.

As someone who has worked mostly with PHP, JavaScript and Java in my professional career over the last ten years, it is both refreshing and needed to see alternative programming languages and paradigms.

The languages that were covered:

dynamic scripting. the language most like PHP in the book
prototype based, like JavaScript
pattern matching, predicates, logic reminded me of an AI university course I took. Interesting, very powerful language for certain problems. Would be interesting to study the source code of the language itself...
A hybrid of Java based OO/functional programming
fault tolerance
Lisp based functional language,infix notation, lists
“Pure” functional language

A common thread of the book (pun intended) is the need for concurrency handling for the future of web languages. Another theme is varying level of immutable state from the hybrid Scala to an increasing level through Erlang, Clojure and Haskell. A few of the languages also use part of JVM - Scala, Erlang, Clojure.

The book was well written and though the languages were distinct, the chapter order seemed to be a nice progression from loose and productive to more functional. Strengths and weaknesses were pointed out. The author’s comparison of each language to a famous movie character was a nice touch in helping to do a quick characterization of each language in a fun way.

One chapter per language means that there is necessarily a limit to what can be presented. You need to cover basics, so some of more interesting features/differences can not be shown. I do not fault the author for this, because it is a consequence of having a book introduce so many languages and not be 1500 pages long.

In addition, viewing a function of the fibonacci sequence for instance over and over got a little dry. Though I do understand showing a common function implementation can be a good thing.

The authors' proficiency in Java meant that about half of the languages had a Java or JVM connection. Limiting this connection and making the selectionmore diverse would have had both good and bad aspects.

Rating: 3.5/5

The book is only five years old, but the web changes dramatically every year. So I am looking forward to reading the followup “Seven more languages in seven weeks” [Pragmatic, 2014, Tate et al]