Programming languages for distributed system

14,190

Solution 1

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++.

Solution 2

Go-Lang from Google is a pretty new language. It seems that among its many attributes, it may some day be suitable for large distributed systems requiring a lot of message queues to achieve scalable consistent and reliable behaviours, at least according to these folks at heroku.

Go seems to be focused on concurrency issues, threading primitives in the language, and so on, and this is perhaps a necessary-but-not-quite-sufficient starting point for distributed systems. Perhaps their thoughts will be helpful to you. I wouldn't call Go-lang's support for distributed systems "first-class", but rather, say that it would be possible to build a first class distributed-systems framework using Go's library and language primitives.

Update: I'm less impressed with Go several years later. I think it suffers from some sad and limited thinking on the part of its authors. I think its decisions on fault and exception handling are retrograde, and render the language unusable.

Update-2016: I'm actually impressed with Go again. I now think in terms of large team development where having N-factorial implementation options leads to N-factorial different coding tarpits. At least Go doesn't seem to have labrea scale tarpits, only certain conventional mudwallows. They absolutely love tabs and will insert them into your code for you if you fail to love them enough.

Solution 3

Bloom is a new domain-specific language for distributed programming. The current alpha release is embedded in Ruby, and targeted at early adopters. Bloom leverages new research on "CALM" analysis to provide tools that pinpoint distributed consistency and coordination issues in your code.

Solution 4

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.

Share:
14,190
sivabudh
Author by

sivabudh

First, I'm a dreamer who engineers and innovates. Second, I CEO at CODIUM and 1000C startups.

Updated on June 05, 2022

Comments

  • sivabudh
    sivabudh about 2 years

    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?