They are different from actors because Rich is "unenthusiastic about
actors". I'm not sure there is any single piece of reference where he
himself describes exactly why he does not like actors, but here is a guess.

Actors have one very desirable property: they encapsulate some state, and
the actor itself is responsible for managing the synchronisation of that
state. This is the part about actors that seemed worth having in Clojure.

Actors also have some very undesirable properties, at least according to
Rich Hickey's aesthetic tastes (or more precisely, what I think his
aesthetic tastes are based on what I have seen in his speeches and
writings): they encapsulate behavior in a closed way and they hide their
internal state.

So, like he often does, Rich separated the essence of actors into separate
pieces and recombined them in a new way, giving birth to what is now called
agents in Clojure: a piece of state responsible for its own
synchronisation, but completely open to behavioral extension and which does
not hide its internal state. Overall, openness to extension and observable
state are pretty important values in the Clojure philosophy.

As for the name, I would assume he deliberately chose a word that was not
widely used yet for any programming language level concept (since this is a
new concept) but still reflected the notion of individuality and
responsibility for oneself embodied in the agent's responsibility for its
own synchronization.

Of course, as agents were part of the initial Clojure release, only Rich
Hickey can give a definitive answer.

On Wednesday, 4 February 2015, Justin Smith <noisesm...@gmail.com> wrote:

> In fact agents in Scala were the only version I found that were like
> Clojure in design.
>
> Beyond the fact that they exist in Scala, and the design goal was to
> replicate Clojure's agents, I didn't find that especially informative.
>
>
> On Tuesday, February 3, 2015 at 6:59:09 PM UTC-8, Leonardo Borges wrote:
>>
>>
>>> (as opposed to the combined state+behavior version of agents that one
>>> sees elsewhere)
>>>
>>>
>> Did you mean to say actors? Actor is the abstraction that bundles state
>> and behaviour together.
>>
>> Agents are different and in fact, Akka, a popular JVM actor library,
>> provides agents in addition to actors themselves:
>> http://doc.akka.io/docs/akka/snapshot/scala/agents.html
>>
>> Cheers,
>> Leonardo Borges
>>
>  --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> <javascript:_e(%7B%7D,'cvml','clojure@googlegroups.com');>
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> <javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@googlegroups.com');>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com
> <javascript:_e(%7B%7D,'cvml','clojure%2bunsubscr...@googlegroups.com');>.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to