Well, obviously Scala and Erland are functional languages. And no matter how
much people keep claiming that they will take over the world, they are very hard
to get your brain around. And as far as doing concurrent abstraction libraries,
these exist and are either hard to use or have a ton of overhead. The stuff in Ruby
that attempts to solve this background problem have tonnns of overhead.
With Go, these features are *compiled* down right into the processor code making
them far, far, far faster. Plus, you get the advantage of having a syntax that just makes
sense for communcation.
In go, here is how you go do something concurrently:
ch := make(chan int);
go sum(hugeArray, ch);
// ... do something else for a while
result := <-ch; // wait for, and retrieve, result
And, to help with new syntaxes, this is the rubyfied version.
channel = Channel.new
channel.go(:sum, huge_array)
# Do stuff
result = channel.read
However, I think what's missing... is how efficient this is in Go. You can launch
10,000 concurrent processes (goroutines) in 2 seconds. Plus, you can do this
reading non-blocking if you want. Channels can be shared. Channels can
be passed around and can facilitate conversations between threads.
Its not that this stuff is unique. You can find this paradigm elsewhere.
Its that this time its compiled, native, garbage collected, cheap, imperative
(non-functional), and fast.
-hampton.