Meyer, OO and concurrency
Ulf Wiger
ulf@REDACTED
Thu Jul 14 21:03:55 CEST 2005
Den 2005-07-14 18:23:42 skrev David Hopwood
<david.nospam.hopwood@REDACTED>:
> Peter-Henry Mander wrote:
> Hi Gurus,
> Sorry but I've got to stick my oar in.
> I've found that modelling a OO system in Erlang recovers the original
> concept of objects as concurrent actors.
>
> Almost, but:
> - Erlang does not garbage-collect processes when they are waiting
> unconditionally for a message that can never be sent.
This was discussed recently in comp.lang.functional and
some other newsgroups. I think what came out of the discussion
was that a process never becomes unreachable in Erlang, and
thus, there is no way to determine that a process is waiting
in vain. Besides, I believe that it's quite beneficial for
debugging that a hanging process isn't automatically removed
before anyone has a chance to inspect it.
> - Erlang Pids are forgeable, and it is possible to enumerate
> the Pids of all processes (which was prohibited in actor
> systems).
... part of the reason why processes are always reachable.
Also a great feature during debugging.
> - processes in Erlang implementations, although they are more
> lightweight than threads, are still a bit too heavyweight to be
> used in the same way as objects.
Agreed. This is one reason why mapping OOD to Erlang is not
such a great idea. For different types of object, you need to
choose different implementations in Erlang. Every type of
object can't reasonably be mapped onto a process.
/Uffe
More information about the erlang-questions
mailing list