Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I recall Carl Hewitt talking about everything being an actor, even messages, and implementations differing from this idea, am I wrong?


You're quite right -- take a look at the original 1973 paper [1], "A Universal Modular ACTOR Formalism for Artificial Intelligence". The "universal" there is intended to mean, among other things, a uniform actor model (comparable to the uniform object model in Smalltalk). It's a remarkable paper.

Later actor languages step away from total uniformity, in part because it requires quite some finesse to avoid infinite regress and/or great inefficiency in such a system.

[1] https://eighty-twenty.org/2016/10/12/hewitt-bishop-steiger-i...

A few choice quotes from Hewitt, Bishop & Steiger IJCAI 1973:

"An actor is always invoked uniformly in exactly the same way regardless of whether it behaves as a recursive function, data structure, or process." (p235; page 1 of the PDF) This implicitly includes messages.

"The intentions [roughly, contract monitors] are written in the same formalism as the procedures they describe. Thus for example intentions can have intentions." (p235)

"[The reader] might envisage an infinite chain of actions (such as banking) to be necessary in order to get anything done. We short circuit this by only requiring that it appear that each of the above activities is done each time an actor is sent a message." (p238)

"There are no instructions [in the sense of present day machines] in our model. Instead of instructions, an actor machine has certain primitive actors built in hardware." (p241)


You can think of a pure-data object, such as a message, as a special kind of actor whose protocol includes messages to extract the parts. It gets tricky when it comes to comparisons: you want e.g. a boolean to be able to say "yes, I'm equal to this boolean b you sent me" but you also want to be able to send a transparent forwarder b' that wraps a "real" boolean b. I'm not sure how the different actor languages dealt with these issues.


Exactly. Data is necessary to make control flow decisions; the purely behavioural approach suffers infinite regress without some form of concrete data.

I suspect that this problem was one of the reasons later actor languages came to include some kind of data; in the case of Erlang, messages are the data, compared structurally; in E, object identities can be compared without sending messages to the objects.


Also:

> Gerald Sussman and Guy Steele then took an interest in Actors and published a paper on their Scheme interpreter in which they concluded "we discovered that the 'actors' and the lambda expressions were identical in implementation."

(https://en.wikipedia.org/wiki/History_of_the_Actor_model#Sch...)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: