So suddenly I need to worry about mutexs and two processes accessing the same data.
As an Erlang programmer that smacks of Erlang done wrong to me. I don't want shared access. With no shared access I can 'let it crash' and know that I have process isolation. This also means that OTP and my restart libraries will 'just work' Erlang For The Win! Go For The Gone!
To be fair the slides never really makes any comparisons with Erlang instead just used an inflammatory title, so it is understandable if responses are a little hand-wavy. It just goes along given the level of discussion.
> To be fair the slides never really makes any comparisons with Erlang instead just used an inflammatory title, so it is understandable if responses are a little hand-wavy.
Totally true - the Erlang too-dumb-to-be-a-cheap-shot was unwarranted. There are responses already posted in this thread along the lines of "This doesn't have anything to do with erlang at all" and they're completely justified.
The comment I responded to was calling out specific details out of context and making silly comparisons from there. That's all.
I like go and erlang, but the title is a troll.. Nowhere in the presentation does it compare the pros and cons of the go approach to how erlang does things.
Sometimes selective receive with erlang's pattern matching is really useful. How about erlang's supervision hierarchies and recovering from errors? Erlang's hot code upgrades on long-running systems to avoid any downtime?
Since go has/needs mutexes, it's laughable to say it's "erlang done right". It's nothing like erlang in that sense.
One funny thing is that the counting example has a really simple and very fast solution in Erlang. Shove the counter into an ETS table and use ets:update_counter as the call to manipulate it.
Erlang takes another approach to many of these problems of concurrency. But I don't think you can argue that one is right while the other is wrong. Rather, right and wrong depends on your perspective and view on things.
Also, I am not sure there is one solution that fits all problems. It depends on your problem what is easiest to use. I mostly program Erlang, but I am following along on the Go-path since it is an interesting language - a modern C is my view of the language.
I actually prefer an actor-centric model vs a channel-centeric model. Don't know why, just makes more sense to me, and Go way might make more sense to others.
15 comments
[ 3.0 ms ] story [ 34.6 ms ] threadAs an Erlang programmer that smacks of Erlang done wrong to me. I don't want shared access. With no shared access I can 'let it crash' and know that I have process isolation. This also means that OTP and my restart libraries will 'just work' Erlang For The Win! Go For The Gone!
Only if you're implementing higher-level concurrency primitives and want to maximize performance.
Did you completely ignore the context in which mutexes were mentioned in those slides?
Totally true - the Erlang too-dumb-to-be-a-cheap-shot was unwarranted. There are responses already posted in this thread along the lines of "This doesn't have anything to do with erlang at all" and they're completely justified.
The comment I responded to was calling out specific details out of context and making silly comparisons from there. That's all.
Sometimes selective receive with erlang's pattern matching is really useful. How about erlang's supervision hierarchies and recovering from errors? Erlang's hot code upgrades on long-running systems to avoid any downtime?
Since go has/needs mutexes, it's laughable to say it's "erlang done right". It's nothing like erlang in that sense.
> Since go has/needs mutexes
I'm not sure it's really fair to say Go needs mutexes, just that they are available for you if you need the performance.
Turn on the incognito mode of your browser or clear the cookies and try again, it should not prompt you to log in.
Also, I am not sure there is one solution that fits all problems. It depends on your problem what is easiest to use. I mostly program Erlang, but I am following along on the Go-path since it is an interesting language - a modern C is my view of the language.