Friday, February 08, 2008

Erlang Challenge Followup

After I published the Erlang Challenge, I saw a few comments on Hacker News and Reddit repudiating it with the following arguments, to which I'd like to respond:

- It was a snide response to the Arc challenge.

Maybe I should have read the article a couple of times over before I published it late last night, because if it came off as snide, I didn't communicate it as I had intended. I've found the Arc challenge fun and interesting (I even submitted my own Erlang solution), and I wouldn't intentionally respond to it in a snide way. The reason I said the Erlang challenge is in the spirit of the Arc challenge is that the Arc challenge highlights Arc's strengths, whereas the Erlang challenge highlights Erlang's strengths.

- It was rigged in favor of Erlang.

That was basically the point. I wanted the Erlang challenge to demonstrate the kinds of problems that Erlang excels at solving. Maybe I should have made this clearer when I wrote the article -- it was more of an illustration of Erlang's strengths than a "real" challenge. I wasn't really expecting other languages to compete with Erlang on its home turf, the same way I wouldn't expect Erlang to compete with, say, C or C++ at low-level systems programming or with ActionScript at Flash programming.

- It showed that Erlang is good at solving a narrow scope of problems, but I didn't show that Erlang is a good general purpose tool.

I don't think it's possible to show in 10 lines of code how good (or bad) a language is at solving anything but problems that are very similar to those in the example. The only true way to judge whether a language is good at building certain types of systems is to build them using the language and evaluate the results.

I know that people have used Erlang successfully to build phone switches, a MMORPG, a massively scalable DBMS, web applications, a collaboration application, high performance messaging servers, ad servers, web servers, a scalable poker server, and a 3D modeling tool. When I say that Erlang is a good language for building certain applications, that's what I base it on.

Edit: I forgot to list CouchDB, an open source document storage system, and Triggit, a widget server unlike any other.


Tim Bates said...

I'm the one who posted your challenge to news.yc and reddit with the "snide" comment, not because I thought you'd written it in a particularly sarcastic way, but because it was so obviously over-the-top biased towards Erlang - in a similar way to how the Arc Challenge was biased towards Arc but taken to an extreme.

I'm an Erlanger myself, so I understand your enthusiasm for Erlang but even so I couldn't tell on first reading whether you were being serious or poking fun at the Arc Challenge. That's why I put a question mark against the editorial comment which pg so helpfully removed.

neilk on news.yc had it right when he said "maybe the requirement of spawning a million threads doesn't seem like a cruel joke to you, but it is to anyone who has to work in a language other than Erlang."

I apologise that I misunderstood your intentions, but the title I chose did what I intended, which was to provoke discussion about Erlang's strengths and the usefulness of "challenges" that so obviously play to the strengths of a particular language.


Yariv said...

Tim, thanks for explaining your point of view. I intentionally made the challenge over-the-top biased towards Erlang, but that's because I wanted to drive home what makes Erlang different from other languages. Anyway, no offense taken, but I'm happy PG removed the interpretive part of the title :)

Yariv’s Blog » Blog Archive » The Erlang Challenge said...

[...] Update: please read the followup. [...]