Author: Bruce Tate, Ian Dees, Frederic Daoud, Jack Moffitt
Publisher: Pragmatic Bookshelf
Date: January 6, 2015
Audience: Language enthusiasts
Reviewer: Mike James
Seven more languages? Do we need to look at another seven?
This is a sequel to Seven Languages in Seven Weeks which we reviewed when it first appeared. The idea is not to give you an in-depth introduction to the languages but to give you the flavor of what makes them special. In this case we also have to take into account the promise of the subtitle - Languages That Are Shaping the Future.
So what are these languages that are so influential?
Equally it does matter what languages the author of the explanation knows reasonably well. A feature which may be quite common in a particular set of languages might be regarded and explained as something unique and special in the language being described if the author hasn't used enough languages. In short it does matter who writes the description. In the case of the first book it was all by one author, but this second volume is a team effort.
All of the language introductions follow the same format but the style of writing changes according to the author. First we have a "day 1" that introduces the general features of the language, then a day 2 which looks at some more detailed feature and a day 3 which attempts a summary of the place the language has in the world with a bigger example. You also get an an interview with the lanaguage's creator(s).
The second language is Factor. If you haven't heard of Factor then what you need to know is that it is a stack oriented language like Forth. If you have never used a stack oriented language then this is going to seem difficult at first. The language is described without explaining what a stack is so you need to make sure you already know.
Next we have Elixir - a sort of cross between Erlang and a Lisp-like macro ability to allow metaprogramming. This is not a language that everyone will want to use, but it is well suited for modern multicore programming.
The fifth language is Julia, probably the hottest language covered. Julia is a language for scientific computation. Here you get the impression that the authors are not very familiar with scientific languages such as Matlab, Octave, Wolfram Language and Maple. A lot of the first part is spent explaining arrays, array indexing and matrix operations. If you don't know one of the scientific languages then it is a reasonable introduction.
The next language, miniKanren, is particularly radical and for me it was the most interesting of the seven. It isn't actually a language but a library that can be used to extend Haskell or Clojure. If you know Prolog and logic programming in general you won't be too surprised at the way that this language works. If you don't know Prolog you might find it hard to see how the magic works. What is interesting is that miniKanren is like Prolog with a functional language built in.
The final language is Idris, another Haskell like language, but this time the novel feature is dependent types - roughly speaking types that have conditions placed on their structure.
The big problem with an overview of languages is that each language makes use of some theoretical idea from computer science and by focusing on the language you miss the central idea. For example, languages are strongly typed, weakly typed, algebraically typed, object oriented, functional, constraint based, logic based and so on. If you want to invent a language take a mix of these and more and implement. If you understand the theoretical foundation of a language then there is still an interest in seeing how well it delivers the idea, but this mostly isn't deep or philosophical.
An alternative would be to deal with the different approaches to language construction and find examples from real languages to illustrate the point. For example, explain what a stack language is and then use Forth to illustrate how it works.
Are these the languages that are shaping the future?
Probably not because it isn't languages that do the shaping but the ideas behind them. Of the languages covered it is miniKanren library that is the most radical and the most exciting, but it is just rehashed logic programming as typified by Prolog and this has never had the impact everyone thought it might.
If you want to have a look at seven languages that span some of the possible approaches then you might enjoy this book - but don't expect any of these languages to change the world of programming.
See Mike James' review of Seven Languages in Seven Weeks.