The "reinvention" of Erlang
Wed Apr 2 16:12:59 CEST 2003
Excerpts from a recent "post" in comp.arch titled
"A general model of computation: Events"
"Function calls are not fundamental. (Remote Procedure Calls are Wrong.)
A function call is actually composed of two parts, the call and the
return. If you only have one processor working on one task, it is
natural to say, when you are done with this subtask, come back to me.
But in a multitasking system there may be many subtasks waiting.
The Event is fundamental. A transfer of information from a source to a
Even a single-tasking Lisp system cheats on this. Scheme requires
tail-recursion to work in constant space, an ugly efficiency hack. But
tail-recursion is simply a linear transfer of control (Events) down the
call chain and back to the top. An optimization that requires exposing
implementation details in function-based languages is trivially
represented in an event-based paradigm.
Lisps are often implemented by compiling to continuation-passing- style,
because it is more efficient. But, viewed as events,
continuation-passing-style is also easier to understand."
In reality, computation is implemented by Events, forming
cause-and-effect chains that eventually produce the desired results.
This is why Events are fundamental, more efficient and easier to
understand, and why our computing abstractions have misled us.
Events are fundamentally parallel and distributed; an Event happens in a
time and a place without disturbing Events in other times and places.
Put another way, software should be more like hardware. Software is
I have more, but I will keep this post focused on this point.
If this is not the "reinvention" of Erlang, it is something very
Paulo Ferreira paf@REDACTED
More information about the erlang-questions