Every time I read something about the weird Erlang syntax I get so tired and try and tell myself not to get into the discussion, it's not worth the effort, some people will never just never learn, etc. But sometimes I can't help myself. So some of my thoughts on this:<p>- Syntax is the easiest part of learning a language. It's all written down and its just a RTFM. And yes, I have written a lot of C and lisp and prolog and erlang and ... and I never have problems with the syntax.<p>- If people worry so much about the syntax what happens when they get to the semantics?<p>- Seriously, why would you want to Erlang to have similar syntax to a language with different semantics? In my view that would be asking for trouble. I think one reason why I haven't had trouble with mixing languages is that both the syntax and the semantics are different. C looks like and behaves like C while Erlang looks like and behaves like Erlang.<p>- The erlang syntax is actually very simple, much simpler than the languages you would like it to look like.<p>I will now stop before I say something nasty.<p>I liked the blog.
It is not just "matters". It is a deeply-researched and well-engineered explicitly concurrent programming language by smart and passionate people. It is a very rare example of first-class project, compared to the common nonsense, like Java or, god forbid, NodeJS.)<p>If it is not that popular (which is rather good) it is not a language's fault. It is due to inability to acquire and maintain an appropriate mindset.<p>btw, there is a nice lecture - <a href="http://www.youtube.com/results?search_query=Erlang%2BJoe%2BArmstrong" rel="nofollow">http://www.youtube.com/results?search_query=Erlang%2BJoe%2BA...</a>
People are always asking what is a good HN article, I'd say this is, great links to research that backs up many of the assertions.<p>"Erlang matters today because it demonstrates how these semantics can be elegantly packaged in one language, execution model and virtual machine." I think yes, in a theoretical sense this is absolutely true. The question is why is it not a language in widespread practical use?
On a related note, has anyone tried Elixir[1], which is a Ruby-like language that runs on the Erlang VM. If so, what project was that? how was your experience?<p>[1] <a href="http://elixir-lang.org/" rel="nofollow">http://elixir-lang.org/</a>
I was just put on a new Erang/OTP project at work and will be working on it for the next 9 months or so. I'm currently on a "ramp up sprint" to get to learn the language, tools and libraries, then we will move on to development. I'm really enjoying the language. OTP is quite elegant and just awesome. Sure, there are a few annoying things in the language that I have already read about on the Net/here but, I can look past those paper cuts. I've been really diggin' Lisp (Clojure, Racket, CL and Scheme) and other functional languages and have been enjoying the concepts so much. I've really become enamored with functional languages and really don't want to write another lick of Java. I'll keep the Objective-C because I have to, you know why. I am not dissin' (crap, I used that word) Java. But, it is nice to be given the opportunity to think differently (damn, another unoriginal phrase).<p>Anyway, just giving a shout out to Erlang as I am finding the platform to be very interesting and that makes the day go by much better.
Erlang's been fine for showing us what's good and what's bad. But most of all, Erlang allows us to take the good parts and move them to a "friendlier" language when the time comes.
Would it be safe to say Scala with the Akka lib offers the same robustness and distributed scalability as Erlang?<p>Erlang is using the actor model and so is Akka.<p>I really want to learn one or the other as a goto functional language.<p>I keep looking at sites like Netflix, Twitter and Foursquare. Those seem to be sites running on either Java or Scala.<p>Why would they pick that instead of Erlang?
I had the syntax fear when I started learning Erlang, but I think the syntax is tailored to the language itself:
- Recursion
- Pattern Matching<p>The problem occurs when you try to translate the Erlang syntax to the language of your choice, which isn't the right approach. C, and Java don't use pattern matching, so naturally their syntax is not designed for it.<p>Maybe one should write a small program to demonstrate the key functionalities of Erlang, like write a TCP packet decoder etc, then try doing the same in your prefereed language and then see what makes sense.
What's missing from your article is a demonstration or theory that outlines how transmission over CPU-interconnects of immutable messages as blocks of memory outperforms the cache coherence algorithms already in place.<p>Immutable message transmission has no way to say "I already know about this message; don't send it again."<p>Most of the good characteristics of Erlang that you describe are achievable in other languages.<p>So what I'm asking is, by what concrete mechanism does immutable message passing outperform cache coherence?