Live data from Hacker News

What can I only do in Erlang?

erlang.org

51–60 of 173 posts

Re: What can I only do in Erlang?

#51
post #34

Erlang looks interesting. However, the only problem I have with starting in Erlang is that on the great computer language shootout, it shows that Erlang is about 10x slower than C++ on most examples. And about 3x slower than Go [1] I know that the problems on this website are not specifically "concurrent" problems, but still, even a distributed web-server must do some non-concurrent stuff at times :) Are my concerns…

Erlang's strength is in its virtual machine which has supervision trees built-in, a built-in DNS system, built-in inter-node RPC, hot code reloading, massive concurrency, etc...

I still haven't experienced a programming environment that replicates the Erlang/OTP environment. Period.

Haskell is amazing, I've built my company on it, but we're also building our company on Erlang - Haskell's tooling around distributed computing is much more immature than Erlang's (although Haskell's concurrency primitives and STM libraries are extremely mature and arguably better than Erlang's actor model).

Re: What can I only do in Erlang?

#52
post #36
post #34

Erlang looks interesting. However, the only problem I have with starting in Erlang is that on the great computer language shootout, it shows that Erlang is about 10x slower than C++ on most examples. And about 3x slower than Go [1] I know that the problems on this website are not specifically "concurrent" problems, but still, even a distributed web-server must do some non-concurrent stuff at times :) Are my concerns…

When you say Erlang is slower than C++, You are right. It is also slower than Go. Ruby is also slower than C++ & Go, But Ruby on Rails is not only popular but a very productive web framework which can help you build your app with a productivity that C++ or Go can't match. When you write a high quality, fault tolerate system, the raw speed comes at the end. Erlang shines when you write a concurrent system plus its des…

The added fault tolerance of Erlang is not free - it adds complexity and overhead. Would you rather maintain an distributed Erlang system running 100s of tasks on 10s of machines, or a simpler C++ based system that due to performance can run on a single machine? Erlang may scale out, but does it scale down?

This is similar to the ADA argument -- it's great and can be used to write safe software, but do you need safe software a month from now or unsafe a week from now? Global networks with millions of users are extreme outliers.

Re: What can I only do in Erlang?

#53
post #36
post #34

Erlang looks interesting. However, the only problem I have with starting in Erlang is that on the great computer language shootout, it shows that Erlang is about 10x slower than C++ on most examples. And about 3x slower than Go [1] I know that the problems on this website are not specifically "concurrent" problems, but still, even a distributed web-server must do some non-concurrent stuff at times :) Are my concerns…

When you say Erlang is slower than C++, You are right. It is also slower than Go. Ruby is also slower than C++ & Go, But Ruby on Rails is not only popular but a very productive web framework which can help you build your app with a productivity that C++ or Go can't match. When you write a high quality, fault tolerate system, the raw speed comes at the end. Erlang shines when you write a concurrent system plus its des…

I disagree with your final conclusion. You also aren't considering the number of unspoken (big, as in banks, or the DoD) users of, say, Haskell because for many it's a competitive edge.

Re: What can I only do in Erlang?

#54

Curious how much people think Go will eat into Erlang? Many of the points made were about Erlang as CSP and that's Go-territory. Loïc Hogun (author of Cowboy, other projects) said: For me Erlang is first fault tolerant, then concurrent, then functional As Go gains libraries like groupcache will it become more and more go-to for networked and shared systems? Is Go moving up from concurrent to fault-tolerant in a real…

Go will not eat into Erlang. Go's type system is deplorable and an embarrassment, it lacks a virtual machine to do the things Erlang can do, it lacks all of OTP, etc...

What I do see eating into Erlang is Scala and Akka, though.

Re: What can I only do in Erlang?

#55
post #6

Curious how much people think Go will eat into Erlang? Many of the points made were about Erlang as CSP and that's Go-territory. Loïc Hogun (author of Cowboy, other projects) said: For me Erlang is first fault tolerant, then concurrent, then functional As Go gains libraries like groupcache will it become more and more go-to for networked and shared systems? Is Go moving up from concurrent to fault-tolerant in a real…

If you dig around in HN's search there are a lot of good comments from people like jerf on the differences: https://news.ycombinator.com/item?id=5451916 https://news.ycombinator.com/item?id=7943248 But there are more here and there if you hunt for them. I think for things where they are sort of similar, Go will definitely be the more successful language because it looks so much more familiar and because it's moving f…

For what kind of embedded thing? We're using it for embedded things too...

Re: What can I only do in Erlang?

#56

ZeroMQ gives you the same but better: messaging in any language. That means you can interface to any component you want written in any language you want. Also hiding native sockets, which means networking is not 1:1 but based on scalability patterns. At some point people will realize what a big deal that is.

Gives you the same what? I cannot think of a single feature overlap. ZeroMQ has nothing to say about supervisors, binary stream pattern matching, inspection, static analysis etc. Erlang has nothing to say about reliable messaging, message brokers, fan-out, routing and other patterns enabled with ZeroMQ. Yes there is the word "socket" in the post.

Better yet: ZeroMQ is not even a language. What ZMQ does it lets your write extremely performant and reliable distributed systems in any language. It is a layer over sockets. Any complex system will have to interact with other complex systems, which are written in other languages. Say you develop a service and a lot of people want to use it. What API are you going to expose? One that is only based on Erlang primitives? Certainly not, because then you have limited your user-base to a small number of people.

Re: What can I only do in Erlang?

#57

Added in edit: Seeing that this is getting down-votes suggests either that I've not been sufficiently clear in the point I'm trying to make, or that you think I've phrased it in an unacceptable way. Either way, sorry you don't think this fits here, but I'll leave it for others to down-vote, correct, reply to, or support, as they see fit. Another edit: Getting more down-votes, but not learning anything. Do you think t…

That's actually the first thing the answer in the post addresses:

> Anything can be done in any language, so the technical answer is "nothing". But the spirit of the question begs for an answer, especially in a company situation with deadlines.

Re: What can I only do in Erlang?

#58
post #45

How does Haskell compare to Erlang regarding these features?

This is where many people get confused.

If I have to build a distributed system, I will pick Erlang/OTP over Haskell any day.

Everything in Haskell is wonderful, including concurrency. It does not have a built in DNS system (for node discovery and connection), inter-node RPC in Cloud Haskell is a joke compared to Erlang, and many other issues.

I've built systems where I used Erlang as the distributed "coordinator" and Haskell for on the machine computing.

Post reply on HN