I’ve returned last week from EUC’2009. My conclusion: If programming languages were stocks, and if I were a market advisor, I would put a “strong buy” recommendation on Erlang. If you have some spare “programming language money” (that is, the time and patience to learn a new language), put it on Erlang. It would be worth your while. Here are some reasons why:
Big Talk
I attended a talk a few month ago by Jeffrey Ullman. One of the slides includes a graph with circles and arrows. He explained that the circles are computers and the arrows are messages, and that the graph describes an algorithm. “An algorithm”, he said, “is how computers collaborate”.
If the great Jeffrey Ullman gives a new definition to algorithms, the rest of us mortals need to pay attention. The reason behind this new definition was that modern CS problems are just too big to fit into the main memory of a single machine. Finding frequent pairs in terabytes of data-sets or handling a rapid click-stream are just a couple of examples. If you want to be a part of the “big talk”, you need to be able to scale up – That is, to distribute.
Distribution is one of the strongest points in Erlang, hence the recommendation. Even if you don’t end up programming in Erlang for living, it’s worth studying the design and standard library of Erlang, with respect to parallelism and distribution. It represents an invaluable knowledge from many years of designing distributed systems.
Buy low, sell high
Erlang is still a manageable language. The syntax is minimal and the standard library is not too bloated. Even the open-source projects are still rather focused on exploiting the strong points of the language, rather than just re-implementing thing “in the language we love”. The Erlang community is still small and welcoming. In other words, you can still become an “Erlang professional” without having to go over gigabytes of documentation and dozens of books. If you do it now, you’ll be ready when distribution will be a must. I believe that the question “can you program several computers, or just one?” will start popping up in job interviews within a few years.
A simple and modern language
Erlang is a simple language: It’s just a functional language with a modules system and 3 extra operators for asynchronous message-passing. Such languages tend to be somewhat restricted – For example, try to find a GUI toolkit for Scheme.
Erlang is not restricted. You can get any modern framework that you like for Erlang: Web servers, web page generation, AJAX, document databases, GUI, unit testing, large-scale system testing – And the list is still growing. It was an absolute delight to see the demos in EUC, in which good-old functional programming scaled up into a fancy web application. It’s true that Lisp did it before, but Erlang does it well.
A hacker’s delight
To top on its other merits, Erlang inherited from its ancestors (Prolog and Lisp) a couple of hackers’ back-doors. It exposes its scanner, parser, compiler and loader to the public use, so tricks like intervening with the parsing and loading code dynamically are available. It might not be the prettiest code in the world, but it is still more elegant than textual code generation.
To summarise: I don’t want to say on which programming language I am putting a “strong sell” recommendation, but one language that I am putting my programming money on, is Erlang.
