views:

82

answers:

3

I've been doing socket programming for a while in C++, and kind of got tired of having to write the same code to handle for errors, serializing / deserializing data, etc.

Are there programming languages out there that have first-class support for distributed system?

+9  A: 

Erlang, as described by Wikipedia:

It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications.

You might also want to read the Distributed Erlang section of their manual.

However, note that Erlang is a functional language and will require a much different paradigm of thought as compared to C++.

Mark Rushakoff
Erlang is definitely the poster-child. While there's literally thousands of languages that are specifically designed for distributed programming, Erlang is by far the most mainstream (and in fact pretty much the only one).
Jörg W Mittag
I chose to accept this answer because Erlang is used in real-world systems and is mainstream, even though, as pointed out by Jorg, there are thousand others built for distributed system.
ShaChris23
What about Scala?
angryundead
I dont think Scala "natively" supports distributed programming. However, with Terracotta, see: http://jonasboner.com/2008/01/25/clustering-scala-actors-with-terracotta.html. Or see Swarm: http://lambda-the-ultimate.org/node/3626
ShaChris23
This also looks quite interesting: http://akkasource.org/
ShaChris23
A: 

Reia is a scripting language for distributed system:

Reia aims to expose the powerful capabilities of Erlang in a way which is easier for your average programmer to understand. It aims to bring the beauty and simplicity of Ruby, a language which is easy and fun to program in, to Erlang, a language which very few will think of as easy or fun to use.

ShaChris23
Note that Reia is still in very early stages of development. Heck, it is still in very early stages of *design*. Not too long ago, Tony ripped out the entire syntax, for example.
Jörg W Mittag
+1  A: 

Parallel Python is a python module which provides mechanism for parallel execution of python code on SMP (systems with multiple processors or cores) and clusters (computers connected via network):

Features:

  • Parallel execution of python code on SMP and clusters
  • Easy to understand and implement job-based parallelization technique (easy to convert serial application in parallel)
  • Automatic detection of the optimal configuration (by default the number of worker processes is set to the number of effective processors)
  • Dynamic processors allocation (number of worker processes can be changed at runtime)
  • Low overhead for subsequent jobs with the same function (transparent caching is implemented to decrease the overhead)
  • Dynamic load balancing (jobs are distributed between processors at runtime)
  • Fault-tolerance (if one of the nodes fails tasks are rescheduled on others)
  • Auto-discovery of computational resources
  • Dynamic allocation of computational resources (consequence of auto-discovery and fault-tolerance)
  • SHA based authentication for network connections
  • Cross-platform portability and interoperability (Windows, Linux, Unix, Mac OS X)
  • Cross-architecture portability and interoperability (x86, x86-64, etc.)
  • Open source

One can get a quick idea of how the code might look by looking at the quick-start guide for clusters.

cjrh