During my years at university (1992-1996) I was very excited about declarative programming langauges. We studied plenty of examples where a clumsy solution in a typical imperative programming language, such as C and Java, could be replaced by a few elegant lines of code in for example Haskell, ML, Lisp or Prolog.
After leaving academia, 12 years ago, I have only been working with imparative programming languages, mostly C, C++ and Java. Apart from occationally hacking away in Emacs Lisp there has been little to remind me about the theory and excitement about declarative programming languages. Until recently…
A major concern today is how to utilize mulit-core architectures. It is not unlikely that we will soon have processors with thousands of cores each running relatively slowly, rather than a few cores running at several gigahertz. Dispite a massive increase in theoretical processing capacity it is not obvious how traditional imperative programming can use such processors effiently. Even quad core processors today are giving headaches to programmers concerned about performance. OMP, MPI, TBB, Fortress, C++0x and so on might promise some short-term relief, but it is probably wise to prepare for a paradigm shift in how to program computers.
During the last year, I have read and heard more and more about Erlang. Several of my geek-friends have suggested that Erlang is rapidly climbing on the list of interesting programming languages that can also be used for serious stuff. In particular Erlang has popped up in discussions about how to handle the multi-core “problem”. Then suddently I received an invition from Syver Enstad and Marius Mathiesen to join a studygroup in Erlang. Today we had the first meeting, discussing the first chapters of the “Programming Erland” book by Joe Armstrong. I would have said yes to their invitation regardless of language (I am a programming language geek), but at the same time it was in particular timely that Erlang was the subject.
So far I have not read more than a few chapters in the book, installed the intepreter and played around with some toy examples, but I am already feeling an excitement about Erlang and declarative programming again. Considering the attention that Erlang seem to get these days and looking at the installed base of serious applications and libraries, Erlang gives me positive vibes. Perhaps I am right now learning about some technology that will play a central role in an upcoming paradigm shift?