[lisp-hh] Re: [ANN] Erlisp website

Hoehle, Joerg-Cyril Joerg-Cyril.Hoehle at t-systems.com
Thu Oct 14 09:05:46 UTC 2004


Dirk,

I wish you good luck.
I recommend you to read Matthew Fuchs' PhD (1995) about Dreme.
It's Erlang concepts taken to an implementation of Scheme.

I'd appreciate a Common Lisp with real language-level concurrency (parallelism?), like in Erlang.
The Dreme paper once made be believe a threading Oaklisp with a software write barrier as the basis for a generational GC would be doable on the Amiga (no time to figure it out :) -- Oaklisp also is a byte-code machine. The key was that each thread would have its own 1st generation memory pool, so allocation would be very fast, and copying to the shared heap would only occur when needed, i.e. for message passing. In my simple model, the GC would need to stop all threads (or rather wait until each reaches a safe point, e.g. doing I/O or consing).

Each time I suggested adding Coroutines to CLISP, the proposal was turned down because "threads are the real thing". Gilbert Baumann once had coroutines in his copy of CLISP in 1998, but that was never integrated and I fear it's lost.
IMHO, threads are not the real thing, because
 - they cost too much (resources for stack, context switch)
 - they introduce need for synchronization, where there was no need before.

Erlang and Oz schow, among others, that it's possible to express some problems very elegantly using seemingly parallel constructs, but without the need for actual threads.

>easier to use and less "low-level" than this industry best practice.

IMHO, an approach similar to Erlang's, or also using constrained variables like in the Oz language could be a key to fun/beautiful/readable/verifyable concurrency, as opposed to the thread-stuck, thread-savy and thread-heavy industrial practice.

I call the "Smalltalk lie" because it talks about message passing whereas all it's doing is synchronous (blocking) method calls, with all the known problems. Erlang does real message passing in my words, because the senders and receivers are autonomous.

Although I have followed the evolution of Erlang for several years, I sadly haven't used it in a project. I tend to stick to single-threaded applications using CLISP, Kawa (Scheme in a JVM), or use Python's coroutines here and there, longing for a better world.

[BTW, isn't there a better place for this than 3 mailing lists?]

Regards,
	Jörg Höhle.




More information about the lisp-hh mailing list