Seven More Languages in Seven Weeks

Author: Bruce Tate, Ian Dees, Frederic Daoud, Jack Moffitt 
Publisher: Pragmatic Bookshelf
Date: January 6, 2015
Pages: 350
ISBN: 9781941222157
Print: 1941222153 
Kindle: B00RW8XFUK
Audience: Language enthusiasts
Rating: 4
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.

Banner
 

So what are these languages that are so influential?

The first is Lua and it typifies the problem with trying to explain a language in such a small number of pages. If you know JavaScript then Lua is like JavaScript, but with some interesting differences. Of course, if you don't know JavaScript then there is a lot more to say. Lua takes a table based approach to constructing objects and it is a classless language.

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. 

 

 

Language number three is ELM - a Haskell-inspired language that compiles to JavaScript. That is it is a strongly typed functional language that can run in the browser. The most interesting aspect of the language is how it deals with asynchronous calls. 

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. 

 

sevenmorelanguages

 

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. 

Related Reviews

See Mike James' review of Seven Languages in Seven Weeks.

Banner
 


Wild West To Agile (Addison-Wesley)

Author: Jim Highsmith
Publisher: Addison-Wesley
Pages: 304
ISBN: 978-0137961009
Print: 0137961006
Kindle: B0BXWP88KP
Audience: Adherents of Agile methodology
Rating: 4.5
Reviewer: Alex Denham

The subtitle of this book is Adventures in Software Development Evolution and Revolution and it is personal reminin [ ... ]



Python Programming with Design Patterns

Author: James W. Cooper
Publisher: Addison-Wesley
Date: February 2022
Pages: 352
ISBN: 978-0137579938
Print: 0137579934
Kindle: B09D2RKQB5
Audience: Python developers
Rating: 1
Reviewer: Mike James
There was a time that design patterns were all the thing. Not so much now. But Python - does it have [ ... ]


More Reviews

Last Updated ( Tuesday, 20 June 2017 )