* Posts by Nicholas walton

2 publicly visible posts • joined 6 Jun 2008

Multi-threaded development joins Gates as yesterday's man

Nicholas walton

@E

See the paper I quoted on Termite which is open source BTW. The abstract is below.

Termite Scheme is a variant of Scheme intended for distributed

computing. It offers a simple and powerful concurrency model,

inspired by the Erlang programming language, which is based on a

message-passing model of concurrency.

Our system is well suited for building custom protocols and ab-

stractions for distributed computation. Its open network model al-

lows for the building of non-centralized distributed applications.

The possibility of failure is reflected in the model, and ways to

handle failure are available in the language. We exploit the exis-

tence of first class continuations in order to allow the expression of

high-level concepts such as process migration.

The real trick is three fold; being functional Termite does not need a store only an environment, secondly everything in Gambit can be serialised and sent over a network connection including running code, and finally continuations (or put simply what is going to happen next) are first class objects so you can stop a program, serialise it, transmit it to another location and continue running even across different architectures.

Nicholas walton

Software and hardware should be separate

Have to agree with the problem of making good use of multi-threading being language based. While we stick with like of C++ we will never go far, the reason being that C++ and its relatives require hardware in the form of memory so code is tied to hardware. Until software can float between machines under its own control as it wishes multi-threading will always be limited. The mention of Erlang is welcome, but interesting work has also been done in the Gambit Scheme dialect using the Termite package http://toute.ca/termite.pdf.

Maxing out 8 cores on my desktop Mac required only around fifty or less lines of code, and no special consideration of inter-process communication, process locking, etc etc.