On Mon, Apr 8, 2013 at 2:52 PM, Tristan Slominski <
tristan.slomin...@gmail.com> wrote:

> This is incorrect, well, it's based on a false premise.. this part is
> incorrect/invalid?
>

A valid argument with a false premise is called an 'unsound' argument. (
http://en.wikipedia.org/wiki/Validity#Validity_and_soundness)


>
> What does it mean for an actor to "terminate". The _only_ way you will
> know, is if the actor sends you a message that it's done.
>

That is incorrect. One can also know things via static or global knowledge
- e.g. type systems, symbolic analysis, proofs, definitions. Actors happen
to be defined in such a manner to guarantee progress and certain forms of
fairness at the message-passing level. From their definition, I can "know"
that a single actor will terminate (i.e. finish processing a message),
without ever receiving a response. If it doesn't terminate, then it isn't
an actor.

In any case, non-termination (and our ability or inability to reason about
it) was never the point. Composition is the point. If individual actors
were allowed to send an infinite number of messages in response to a single
message (thus obviating any fairness properties), then they could easily be
compositional with respect to that property.

Unfortunately, they would still fail to be compositional with respect to
other relevant properties, such as serializable state updates, or message
structure.



Any reasoning about actors and their compositionality must be done in terms
> of messages sent and received. Reasoning in other ways does not make sense
> in the actor model (as far as I understand).
>

Carl Hewitt was careful to include certain fairness and progress properties
in the model, in order to support a few forms of system-level reasoning.
Similarly, the notion that actor-state effectively serializes messages
(i.e. each message defines the behavior for processing the next message) is
important for safe concurrency within an actor. Do you really avoid all
such reasoning? Or is such reasoning simply at a level that you no longer
think about it consciously?


>
> there is no privileged frame of reference in actors, you only get messages
>

I'm curious what your IDE looks like. :-)

A fact is that programming is NOT like physics, in that we do have a
privileged frame of reference that is only compromised at certain
boundaries for open systems programming. It is this frame of reference that
supports abstraction, refactoring, static typing, maintenance,
optimizations, orthogonal persistence, process control (e.g. kill,
restart), live coding, and the like.

If you want an analogy, it's like having a 3D view of a 2D world. As
developers, often use our privilege to examine our systems from frames that
no actor can achieve within our model.

This special frame of reference isn't just for humans, of course. It's just
as useful for metaprogramming, e.g. for those 'layered' languages with
which Julian opened this topic.


> Actors and actor configurations (groupings of actors)
> become indistinguishable, because they are logically equivalent for
> reasoning purposes. The only way to interact with either is to send it a
> message and to receive a message.
>

It is true that, from within the actor system, we cannot distinguish an
actor from an actor configuration.



 "It's Actors All The Way Down."
>

Actors don't have clear phase separation or staging. There is no "down",
just an ad-hoc graph. Also, individual actors often aren't decomposable
into actor configurations. A phrase I favored while developing actors
systems (before realizing their systemic problems) was "It's actors all the
way out."
_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to