The most simple concurrent language?

I am looking into a project of building decentralized concurrent functionality on a group of OS-less Illuminata X machinas
( http://www.liquidware.com/shop/show/IXM/Illuminato+X+Machina ).

As I just want something concurrent to work (say, distributed merge sort), and aren't interested in it being fancy in any way, my question goes:
Whats the most simple concurrent language out there (fewest and simplest code lines), whose functionality I can be inspired from / steal when building my system? It has to based on message passing and I generally have a soft spot for process calculi inspired languages :)

Jon Loldrup
Copenhagen

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

ORC

http://orc.csres.utexas.edu/index.shtml

Today I read the user manual for ORC. The manual is extremely good and I am impressed by the simplicity of the language sytax and semantics. If you already know Java then I'm sure that ORC will make the concurrency part much easier. ORC is like pi-calculus without channels (channels are replaced by a 'site' concept). ORC can be used for managing distributed processes also.

Orc is fun but limited

I concur that Orc is a neat way to gain inspiration, especially in how much power and expressivity you get with only three rules. The recent advances in practical usability look to provide more sandbox experimentation (I'm somewhat out of date, so I can't provide much feedback there).

However, I think it quite inaccurate to analogize Orc's sites with channels or message passing. Sites are highly generalized "black boxes" that could, indeed, become channels, but could also be anything else. As such, they aren't a good intellectual introduction; it would likely be best to start with something that has first-class support for channels.

In sum, I'd emphatically recommend at least a quick glance at the three Orc primitives and try some experimentation with them. It's a real eye-opener. But Orc doesn't satisfy the OP's other requirements, so he'll have to move on to something with a little richer semantics.

occam

What you've just described (simple, concurrent, message-passing, inspired by process calculus, designed to work in a system built from groups of processors) sounds suspiciously like occam. Occam was deliberately designed to be as simple as possible (hence the name), is concurrent from the ground up, uses message-passing concurrency, was heavily influenced by CSP (and more recently the π-calculus), and was invented to program Transputer systems (from a quick glance the X-machinas look a whole lot like a modern reinvention of the Transputer).

Information on the modern variant of occam can be found here. There's a bare-metal version of occam (for Pentium architectures) called RMoX. You might also look at the Transterpreter portable occam virtual machine.

Scheme

Schemik I mean.

Pike's Squeak/NewSqueak

Pike's Squeak and NewSqueak languages are simple, clean and nicely concurrent. See:

http://doc.cat-v.org/bell_labs/squeak/

and

http://swtch.com/~rsc/thread/newsqueak.pdf

There are implementation papers about details of both, I think.