Joe Armstrong's thesis "Making reliable distributed systems in the presence of software errors" (http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf) is a really excellent introduction to Erlang and the ideas behind it. I'd recommend that, along with "Programming Erlang", to anyone interested in learning Erlang or in simply becoming a better programmer.
I am learning Common Lisp recreationally to familiarize myself with functional programming using Mr. Graham's books (they are fantastic by the way). But Lisp does not seem to be in favor in industry. I do however hear a lot about OCaml and Erlang. Which of the three do you recommend I focus on?
I am leaning towards Erlang now. It seems to be a network programmer's wet dream.
CL is pretty special and has features you just won't find in most other languages (macros, interactive error-handling, generic functions), and raw speed (SBCL).
OCaml...I hear discussion about it, but personally having evaluated it, I don't know what kind of a future it has (I really doubt it will ever be a 'big' thing). It has some real cruft around the edges, and I can see Haskell or Scala picking up real momentum before OCaml ever does.
Erlang: learn it. It is a simple language and as a programmer you'll probably find it very interesting. Also if you haven't done much functional programming, Erlang will push you into it. Erlang obviously has an advantage when it comes to parallel processing, but we'll have to see whether the string support ever gets better, whether it gets more mainstream libraries, and whether the complete lack of objects is an issue for adoption.
Right now I think Erlang is being hyped a little prematurely, but that might change if other languages can't adapt adequately to multi-core programming.
Nice intro. If you haven't picked up "Programming Erlang: Software for a Concurrent World" by Joe Armstrong, I can not recommend it enough. One of the few programming books that you look forward to reading.
Erlang is a good example of "crossing the chasm" in a programming language (http://welton.it/articles/programming_language_economics.htm...) - despite many other shortcomings, it is great for distributed environments, and for its concurrency model. This is enough to give it a boost into the 'big time', if they play their cards right.
Hopefully one day we will find our silver bullet. With the number of languages/platforms getting touted these days, we are certainly looking hard for it :)
I'm not sure that we will ever find the one silver bullet. IMO, you need to choose the right tool for the job and sometimes that means leaving your favorite programming language behind for a project or two.
Speaking as an Erlang advocate it is great for communications and concurrency, but the string processing leaves a lot to be desired. It is good enough, but if you are doing text manipulation as your primary task Erlang may not be right for you ...
But if you are working on communications technologies, you really need to look into it ...