Erlang – overhyped or underestimated?

November 14, 2008

Erlang is like an exotic beautiful woman with no dressing sense.

I came across Erlang about a year ago. It is a language of a kind – precise, crafted and powerful. Its been there for about two decades now, and people have been using it for serious real-time applications. But the hype Erlang is getting in the last couple of years is mostly for wrong reasons.

Having said that, its a language every programmer should look into at least once – its refreshing. And it might just be the perfect language that fits your needs.

What doesn’t Erlang have? It has its own Virtual Machine that it runs on. It is ridiculously simple to write distributed applications, with its message-passing style concurrency. It has its own database. It supports hot code swapping without even restarting the servers, and its already been proven in some telecom applications that need very high uptime. Hot code swapping is still a nightmare even in a supposedly mature language like Java which is targeted at building web applications – that have high availability and scalability.

However there are certain things that either suck or are not as convincing about Erlang.

1. Today’s mainstream developers who are used to C or Java like syntax wont find its Prolog-like syntax too friendly. Unless you started programming since the 80′s & 90′s and are used to languages of similar syntax, it will take quite some time before you get comfortable with Erlang’s weird syntax. I never felt too comfortable with the syntax.

2. While the core language itself is small and easy to learn, the libraries within the language are inconsistent, incomplete and poorly documented. I posted a couple of questions in the forums regarding how to use a library, and usually the answers would be “Don’t use that library, use the other one”. (Oh yeah, kind of like the Java JDK Logging. Please use Commons Logging.)

3. Only a few people have written production level codes and you rarely get to hear from them. All you hear from is Erlang enthusiasts, who are hyping it as the next big thing, but haven’t done more than a few labs from Armstrong book.

4. I can’t imagine how you can organize large code-bases in Erlang or even work as team, and this doesn’t feel right to any OO programmer.

5. Most of the performance matrices are one-sided, and are performed by people who have an interest in Erlang. I would love to see some independent analysis.

6. Its support for web-development is very primitive. With web frameworks like rails and grails, there is a lot of serious work for Erlang if it ever intends to go to that market.

7. Did I talk about Strings in Erlang? IO speed?

I know weaknesses aren’t as important as the strengths of a language. Erlang has it own expertise, its syntax structure, and its own audience. But the flaws of Erlang might just turn away a new programmer, even before he gets to its beauty.

If you are writing a web crawler, Erlang may very well be your choice. If you want to write a client-server, where the client makes a large no of requests, and you want to spawn concurrent processes to process the requests, Erlang could be your choice. If you want to write a Distributed Hash Table, Erlang could be your choice. Or if you are writing a video streaming server or doing system integration or writing any system utility. But a regular developer (building a CRUD application on top of a database, right? ) doesn’t have much to do with Erlang as yet. Secondly, even if you are working on those highly scalable, reliable and concrurrent systems, people have a hard time accepting Erlang along with its flaws.

The industry has a definite space for Erlang, currently and more so in future as we deal with more and more users, more data, and more forms of distribution. If not for Erlang exactly, then for an improved version of Erlang. It isn’t here to be the next Java, but to solve out the problems that Java couldn’t do smoothly in over a decade (despite having such a great community).

Erlang is going from an underestimated to an overhyped language. I wish it can convert the hype and raw interest in Erlang into something meaningful. How about a modern variation of Erlang on the Erlang’s virtual machine. Is it too late?

23 Comments on Erlang – overhyped or underestimated?

Respond | Trackback

  1. Chad DePue says:

    I think that the future of Erlang is exactly what you describe – particularly languages like Reia – which is a Ruby like language with Python style indentation, compiled to the Erlang VM. That type of innovation combined with new web frameworks that make web development easier will keep the wheels from coming off the admittedly near red-lining hype machine.

    • Manuel Rubio says:

      I suppose that Elixir could be the most important thing to launch the Erlang Virtual Machine as a platform to develop all the server type applications. The hype I think is on it now because the main actors in the Erlang world is on it and O’Reilly, Manning and PragProg is preparing a book about it :-)

  2. sacharya says:

    Didn’t know about Reia yet. Will definitely look into it. Thanks.

  3. Ryan Lazuka says:

    Most of the issues that you listed are in regards to Erlang’s lack of support. As more and more people learn Erlang, those problems should start to go away.

  4. Chandon says:

    Your assumption that writing CRUD web applications is what “regular developers” do is amusing. Web developers have very high visibility – largely because they tend to blog – but they certainly aren’t the majority of developers.

  5. Abhijith says:

    Google for Lisp Flavored Erlang – Erlang in lisp’s clothing ;)

  6. Ulf Wiger says:

    Re (3), normally people comment that the erlang-questions list is nice exactly because there are lots of people on it with experience from real-world development who are most willing to help out.

    Looking e.g. at the September archive, quite a significant portion – I didn’t coun’t but I’d wager more than a third – of the posts were from seasoned experts with many years of commercial experience with Erlang. I’d say that this is consistently the case.

    Re. (4), there are a number of very large code bases in Erlang – up to millions of LOC, and large teams – up towards 100 programmers. The experience of many who have seen large projects in both C++/Java and Erlang is that Erlang is much easier to work with – esp compared to C++ – in large projects.

    Otherwise, I agree that there is some hype. More interesting is perhaps that more and more companies are using Erlang commercially, and more and more are hiring.

  7. Erich Kaderka says:

    Hello,

    have you tried http://www.erlang-web.org/ for CRUD web apps?

  8. Also check out Nitrogen (http://www.nitrogenproject.com) for building powerful, event-driven web applications with Ajax updating, Comet, Drag and Drop, etc.

  9. sacharya says:

    Thanks Rusty. I have been playing with Nitrogen recently and it looks really promising so far.

  10. Mister Magoo says:

    Was almost taking you seriously till you got point 4. There are some large projects written in erlang, but perhaps more importantly the structure in which erlang projects are designed dictates how they are organized. I think you’ve hit the nail on the head though. Most OO programmers have an object obsession and dont organize projects into logical functional components.

  11. Grammar Nazi says:

    Performance “matrices” ? Did you mean “metrics” ?

  12. Scrambles says:

    Also, check out Efene, a language inspired by Python and Javascript which compiles to BEAM files. And if you like your whitespace significant, you can use its brother: Ifene.

    http://marianoguerra.com.ar/efene/

  13. Stewart says:

    Mate,

    Point 4) Once you get into OTP and break your project up into logical components your application takes on an arguably more OOP approach than C++ or Java. Especially if you leverage rebar to assist with deps.

    Point 5) Bear in mind that BEAM is a soft realtime system – it was not designed for throughput. It is good enough for your needs in the web world.

    Point 6) I beg to differ, webmachine – an toolkit for easily creating well behaved HTTP based systems – has a complete and properly implemented HTTP protocol. There are many other famous frameworks with an incorrect HTTP protocol.

    Your point about regular developers making CRUD apps, well I threw together a few scripts and OTP applications that allow the regular developer to easily create CRUD type applications. Search for earlybrew on bitbucket.org (Cappuccino talking to webmachine.)

    merry christmas

  14. Mihai Balea says:

    1. The syntax is weird, but a decent programmer should start feeling at home in about 2 weeks. It’s not that bad, and there’s a logic to it… but it is different.

    2. True. That is one of my main beefs with the environment.

    3. I write production level code in Erlang on a daily basis. I recognize a few people amongst those who replied to your post that are heavily involved in the community. So you do hear from us. All you have to do is write a blog post bashing Erlang :) Just kidding, people tend to congregate on the official mailing lists and are usually very helpful and welcoming.

    4. You organize code in distinct Erlang apps (vaguely equivalent to modules or libraries in other languages). I admit, this isn’t too helpful, but a thorough explanation would require a lot more space than what’s available here.

    5. Not necessarily, there are benchmark results provided by people not directly interested in Erlang. Just need to look for them. That being said, Erlang excels at some type of tasks and sucks badly at others. You will have to know when to use it and when to steer clear.

    6. Yaws, Erlyweb, Webmachine, Nitrogen.

    7. Use binaries instead of lists for string handling. The latest OTP releases even offer a library of common string functions that operate on binaries. If that’s still not enough, then you might want to consider some other language. I/O, if done right, has similar performance as other languages. I’ve never heard of or experienced any significant problems with that.

  15. Tristan says:

    Checkout the new book on writing production code using Erlang/OTP: http://manning.com/logan/

    And checkout Erlang Factory and ErlangCamp to meet people who do writing production code and large projects in Erlang.

  16. Josh says:

    It’s really sad that people get hung up on syntax, and it’s obvious that people who only know 1 language are going to have more problems learning Erlang. How many programmers are there who only know C or Java, and don’t ever do any work in a different language, like Javascript, Python, Bash, Powershell, Ruby, etc.?

  17. [...] Sudarshan Acharya’s – Erlang over-hyped or underestimated [...]

  18. Well, Erlang features are not that much uncommon in computer science:
    - single assignment+pattern/matching (Prolog-like) is present in some FP languages like OCaml (and note this language has a more “traditional” syntax than Erlang, with close to “C” language performance).
    - actor model is present outside Erlang too;

    So, the main advantage I see in Erlang is primarily about its VM, plus, secondarily, the core environment (enabling actor model + distributed computing).
    And I feel frustated these core features are not available outside Erlang, in other languages (as it looks like most of the associated implementations could be hidden from the developer perspective). It would have make easier the distributed computing development…

  19. [...] Erlang – exagerada ou subestimado? por Sudarshan Acharya – original [...]

  20. Hussein Said says:

    Thanks to a co-worker, I am recent Erlang convert, if I can say so. I was reluctant at the beginning to embrace a new language, after all, JAVA, .Net and c++ were supposedly sufficient to tackle any software challenge concurrent or not. Unfortunately, these languages focused so much on OO semantics that they failed to inject life into objects. Then came Web services and promised life to an object, but fell short on that promise, as web services ended up nothing more than a bridge to cross from one platform to another.
    None of these languages were able to model real life scenarios, where concurrency in the enterprise is a natural habitat. Then comes Erlang, where there are no lifeless objects, but processes with heartbeats that are full of life of their own and are aware of their surroundings, able to reach out to the other processes by dropping a message in a mail box and getting a reply if they desire so. Poetic,,,may be, but the new era of computing we ushered in in the new millennium where distributed services in the cloud are making a significant shift in how we develop software, necessitates that we shift our mindsets from using OO to thinking in process and interactions. As such, I welcome those Erlang hypes, until someone can vouch for Scala or Axum :-)

  21. ejjyrex says:

    “Turn away new programmers”…that seems to be bit more over hyped than all your words />

  22. Brian says:

    A modern variation of Erlang on Erlang’s VM? Elixir.

Respond

Comments

Comments