As I said before, I like to learn a new programming language every year. I also like to read at least 6 computing-related books every year, but the article about those 6 will come later.
The reason for these two rules is twofold: first, it gives me lots of material to blog about, and helps me refine my list of preferred languages :) secondly, and more seriously, learning a new programming language makes you think differently about problems. It’s not just something to keep my CV updated; it’s to challenge what I know, how I know it, and why I know it. It is important, and it’s not easy; and I’m not the only one to do it.
From all the candidates that I had for this year, I chose to learn Erlang. Here’s some of my impressions.
Erlang is a functional programming language, created by Joe Armstrong (photo) at Ericsson in the 80s. The name of the language is a pun between the name of the Danish mathematician Agner Krarup Erlang and the acronym “ERicsson’s LANGuage”. By the way, lots of things are coming from Denmark lately.
The main factor that made me jump on this wagon was that the language got a lot of attention, both in 2006 and 2007. The peak of all this buzz was a couple of days ago, when Amazon unveiled a new online service called SimpleDB, apparently built with Erlang. The reason for this is Erlang’s inherent capability to handle massively parallel programming relatively easily. In Erlang you can create lightweight processes, each sending messages to the others, and thus divide your problems in small units that run concurrently.
Even more buzz, the release of the Pragmatic Programmer’s book about Erlang (written by Joe Armstrong himself) has added a strong factor to the recent popularity of the language.
How to start with Erlang?
- Get it working on Leopard using MacPorts;
- Activate the Erlang language support in TextMate;
- Follow a quick tutorial to get the idea;
- Check out the Yaws web server build on Erlang, apparently much, much stronger than Apache under high load!;
- Download, install and play with ErlyWeb, an MVC framework similar to Rails;
More interesting reading (and viewing) about the language:
- Erlang: the Movie;
- What’s all this fuss about Erlang?, by Joe Armstrong;
- Web 2.0: Shifting from “Get Fast” to “Get Massive”;
- Concurrency is easy, in Joe Armstrong’s blog;
- More Erlang, by Yariv Saran, a guy who really knows about Erlang;
- An Introduction to Erlang on the ONLamp.com O’Reilly’s website.
My del.icio.us link list about Erlang will keep growing… subscribe to the RSS feed to get updated of new entries on your favorite reader.
In spite of some opinions that I have seen about Erlang so far (please check a question I’ve asked at LinkedIn about it), I have found this language extremely interesting; and at the moment, my list of known programming languages goes like this:
- 1992: QBasic; it came bundled with my first PC!
- 1993: Turbo Pascal; it was part of the official curriculum in the University of Geneva.
- 1994: C; my first contact with the bracket syntax.
- 1995: Delphi; I preferred more the Pascal syntax at that time… and it was an amazing environment to work with.
- 1996: Java; everybody was talking about it at the time! You couldn’t miss it.
- 1998: VBScript; that’s when I started working with MS’ ASP technology;
- 1999: Transact-SQL; those ASP pages were talking to a SQL Server 6.5 in the background…
- 2000: C# and Prolog; the first was the coolest thing since sliced bread (remember the technology previews back in August 2000?), and the second, part of the official curriculum at the Universidad de Buenos Aires…
- 2001: C++; I had to learn it. It’s a major step in anyone’s career.
- 2002: PHP; my jump to the open source world started here…
- 2003: Objective-C; after I became a “switcher”, I installed the free developer tools that came with Mac OS X… and never looked back!
- 2004: Visual Basic.NET; stuff that some clients required me to learn… geez.
- 2005: Ruby; my flirting with Rails started that year.
- 2006: LINQ; a language inside a language: or how to use C# to filter collections in-memory as if they were small databases…
- 2007: Erlang; here I am now!