Friday, May 6, 2011

The rise of concurrency

We are living in the second generation of concurrency tools. When first were mainly extensions to existing languages, the new languages, primary designed for concurrency programming appeared.
I guess Erlang was the first swallow in such kind of languages, but now, as far as I know, we have two more:
Clojure (http://clojure.org/) and Go (http://golang.org/).
They explore interesting ideas about future of the languages: built-in thread safety with transactional memory for shared data in Clojure and goroutines - very lightway "threads" that runs in parallel and have a nice concept of channels and callbacks that allows goroutines to coordinate.

4 comments:

  1. Hi,
    There are two more interesting stuff:
    1) Groovy + GPars(Groovy Parallel Systems), http://gpars.codehaus.org/
    2) Scala + Akka (Akka is the platform for the next generation event-driven, scalable and
    fault-tolerant architectures on the JVM), http://akka.io/

    ReplyDelete
  2. How Akka differs from Clojure?
    Clojure has:
    1. the software transactional memory system (STM) supports sharing changing state between threads in a synchronous and coordinated manner.

    2. The agent system supports sharing changing state between threads in an asynchronous and independent manner.

    3. The atoms system supports sharing changing state between threads in a synchronous and independent manner.

    4. The dynamic var system, exposed through def, binding, et al, supports isolating changing state within threads.

    Akka has first 2 things, but what about 2 others?

    GPars doesn't have STM yet.

    ReplyDelete
  3. 1. Unfortunately, I have no idea about these two's.
    2. But, Akka isn't just about Concurrency (http://akka.io/docs/akka/1.1.1/intro/what-is-akka.html).
    3. Scala + Akka cover much broader area than Clojure (IMHO).

    ReplyDelete
  4. Hey Serhiy, nice to see you have started blogging.

    ReplyDelete