Hacker News new | comments | show | ask | jobs | submit login

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.

"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?




> The question is why is it not a language in widespread practical use?

1. It kind of is, I think RabbitMQ, CouchDB and Riak are doing ok, for example.

2. Both syntax and semantics are sufficiently different from "industry standard" to be a hurdle for majority of people... I'm being told. I don't understand this; the more different the language is the more interesting it seems to me and the more happy I am to learn it[1], but I heard this argument enough times to accept it as (sad) reality.

[1] And there is still so many of them to learn! Take a look at any one RosettaCode page (http://rosettacode.org/wiki/Y_combinator) if you don't believe me :)


Adding to your response: Big ones are using Erlang, such as Github, Heroku, Facebook and Amazon...


>> It kind of is, I think RabbitMQ, CouchDB and Riak are doing ok, for example.

And scalaris [1]. For me it's killer app for Erlang.

[1] http://code.google.com/p/scalaris/


RabbitMQ has some pretty serious limitations related to it being implemented on Erlang that keep it pretty strictly in the realm of being a message queue rather than a generic queue.

CouchDB is more C++ than Erlang these days, bad example. It hasn't been mostly Erlang for a really long time. Erlang basically only does the clustering behavior, which is something Zookeeper et al. do already.

Riak is the only solid example out of those you listed, and its known for having poor raw performance, excellent availability, easy clustering, and awful usability.


> RabbitMQ has some pretty serious limitations related to it being implemented on Erlang that keep it pretty strictly in the realm of being a message queue rather than a generic queue.

Interesting, where can I learn more about this claim? What are the incompatible facets of a generic queue and Erlang? What is an example of these generic queues (or if it's only an ideal, what are its characteristics)?


Just don't use it for big, long-lived work queues and you'll be fine.

If the queue gets badly backed up, you're probably fucked.

Larger, longer-lived work queues are really more of a Hadoop thing, not an in-memory queue thing.


I got curious and googled a bit, here's what I found: http://www.quora.com/RabbitMQ/RabbitMQ-vs-Kafka-which-one-fo...

Where the first answer states that: "RabbitMQ presumes that consumers are mostly online, and any messages "in wait" (persistent or not) are held opaquely (i.e. no cursor). RabbitMQ pre-2.0 (2010) would fall over if your consumers were too slow, but now it's robust for online and batch consumers - but clearly large amounts of persistent messages sitting in the broker was not the main design case for AMQP in general."

(It's contrasted with Kafka, which is "designed for holding and distributing large volumes of messages")

Still, I see no reason why you say that it's Erlang that causes this?


People often use Erlang primarily for the memory model. Pure in-memory didn't work for our use-case.

You can implement a queue that works better for batch work in Erlang, it's just that it'd be closer to a data store.


> If the queue gets badly backed up, you're probably fucked.

Isn't that true of any queue ?


Not really, no. Depends on what how narrow you are about the definition of "queue".


I only said it is being used, not how good the products are... And CouchDB is a perfect example - from what I saw they use Erlang for what it's good at and use other tools where it's not appropriate - that's exactly how Erlang should be used[1].

[1] Or at least Joe Armstrong says so in his book, "Programming Erlang".


> its known

Can you point to any references?


Here's something I wrote about Erlang a while back, and why I don't think it'll ever go mainstream:

http://journal.dedasys.com/2007/09/22/erlang


One of the huge hurdles for me personally was Erlang's heritage of Prolog syntax. I actually gave up once, and only cleared it second time around. Now I can see certain elegance and succinctness in the syntax.


That is the only proper way to learn Erlang. Your first week or two becomes so frustrating, you just leave for a month. Then it starts to click when you come back.

Things are much easier now with line numbers in error messages though.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: