An Erlang fanboy here.

There is very prevalent opinion that Erlang is about multicore and 
scalability and such. The truth is that it's completely wrong. Erlang 
wasn't even multithreaded until early 2000s (if I recall correctly); all 
it's "green threads" and "message passing" and such are designed to handle 
and isolate errors (there is a even a joke that Erlang means ERror handLing 
lANGuage), not to provide multicore scalability. It just happens that the 
combination of actor model and share-nothing memory model allows to run a 
lot of "schedulers" (actual processes that execute "green threads") in 
parallel. There are *a lot* of drawbacks in this approach; for example, 
it's really hard to build something like reducers/fold in Erlang due to 
strict isolation of threads and quite expensive (when we are talking about 
number crunching at least) message passing. Moreover, Erlang VM (or BEAM as 
it's named) is comparably slower than JVM in terms of computational 
throughput (number of factorials counter, or numbers added, or strings 
concatenated per second). There are a lot of clever tricks there to 
mitigate isolation problems, and it was actually shown that current BEAM 
scales almost linearly for up to 64 cores at typical Erlang code (and it 
will scale even better in near future thanks to EU-funded RELEASE project), 
but please keep in mind that despite all this scalability it's not about 
raw performance. It's about huge companies like Ericsson running Erlang 
software due to it's superb error handling abilities and simplicity and 
almost-real-time response time distribution and legacy at massive scale and 
being able to reduce hardware costs to run it. When it comes to things like 
multiplying matrices or cleverly mutating shared state or parsing huge CSV 
files Erlang will be beaten by Clojure in no time despite "scalability".

On Sunday, April 28, 2013 6:51:04 AM UTC+4, Cedric Greevey wrote:
>
> https://en.wikipedia.org/wiki/Intel_MIC
>
> 50+ cores?! Clojure will leave every other language in the dust on 
> something like that, thanks to its inherently scaleable concurrency 
> constructs. Try writing a 50-threaded Java application without getting 
> deadlocks all over the place, or cheating and using very coarse-grained 
> locks (have fun with the task manager showing 2% CPU utilization when your 
> app is running full-bore!).
>
> If big, 32-bit addressing spaces were what made automatic memory 
> management really begin to come into its own (and with it, Java), then it's 
> doubtless 50-core machines that will make automatic concurrency management 
> really begin to come into its own.
>
>

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to