In https://www.youtube.com/watch?v=7erJ1DV_Tlo Hewitt says that Actor theory was invented as a way to reason about programs....
actor (actor theory)
> To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
--
ern0
dataflow evangelist
I also don't like the fact that Hewitt says storage is essential to his actors - I feel he is conflating two rather different concepts. Yes, FBP processes have working storage, but most of the data they work with is held in Information Packets - so would Hewitt turn IPs into a different kind of actor?
> email to flow-based-programming+unsub...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
--
ern0
dataflow evangelist
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
Pony is an open-source, object-oriented, actor-model, capabilities-secure, high-performance programming language.
The Pony runtime has its own scheduler, which by default has a number of threads equal to the number of CPU cores on your machine. Each scheduler thread can be executing an actor behaviour at any given time, so Pony programs are naturally concurrent.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-progra...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-progra...@googlegroups.com.
--
Hi Paul,
There's an interesting Turing Award Lecture on the Actor Model that Robin Milner delivered in 1993 called "Elements of Interaction." It's available here: http://delivery.acm.org/10.1145/160000/151240/a1991-milner.pdf?ip=213.205.198.148&id=151240&acc=OPEN&key=4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35%2E6D218144511F3437&CFID=973929253&CFTOKEN=25845288&__acm__=1503088355_24a0beefc400d676a44f232b0b89d465
I think we can find the common ground between Actors and FBP in the rejection of the shared memory model. Milner sees the problems of concurrency being caused by the memory being accessible by multiple processes:
"Once the memory is no longer at the behest of a single master, then the master-to-slave (or: function-to- value) view of the program-to- memory relationship becomes a bit of a fiction. An old proverb states: He who serves two masters serves none. It is better to develop a general model of interactive systems in which the program-to-memory interaction is just a special case of interaction among peers."
This problem looks to be at the root of FBP, although you approached it from a different angle:
"Part of the reason for this is that most of today's computers have a uniform array of pigeon-holes for storage, and this storage behaves very differently from the way storage systems behave in real life. In real life, paper put into a drawer remains there until deliberately removed. It also takes up space, so that the drawer will eventually fill up, preventing more paper from being added. Compare this with the computer concept of storage - you can reach into a storage slot any number of times and get the same data each time (without being told that you have done it already), or you can put a piece of data in on top of a previous one, and the earlier one just disappears.... Although destructive storage is not integral to the the von Neumann machine, it is assumed in many functions of the machine, and this is the kind of storage which is provided on most modern computers. "
http://www.jpaulmorrison.com/fbp/concepts_book.shtml
Where Milner uses domain theory, you use a physical analogy.
So It seems that both approaches are based on the same insight but they differ in terms of implementation.
I think this is because of the approach taken. Milner developed the Actor model by starting with the conceptual model and then building an implementation of that model.
Correct me if I am wrong, but I believe that FBP was engineered through practical implementation. You started with the built product and refined it through practical experience.
The fact that both paths converge so closely is fascinating.
What I am wondering is this: the Actor model we now have is one implementation of the theoretical model. Is it the only possible implementation? Do other valid implementations exist?
Would FBP be one of valid those implementations?
Does anybody know of a formal method for this type of thing? How do you go about proving whether an approach is a valid implementation of a conceptual model?
This could solve one of the big problems that FBP faces: the lack of a formal model.
--
--
I'm confused why you say you are seeking the elephant then, it seems like the animals are pretty well understood in terms of a classification/taxonomy? I guess you mean we'd like a more maths of some ilk based description?
--
BTW With respect to actors' single input queue, mentioned by John, Joe Witt's NiFi currently has that limitation, which, as he says, puts limitations on having a generalized Collate. He has said that he may add multiple input ports at some time in the future... Correct, Joe?
> The problem is that we don't have a
> clear description of push and pullPaul M.Regards,Not very formal, I'm afraid! But, again, we ran a bank on this logic!Whether a process pushes or pulls is entirely under its own control...Seems pretty clear to me:- "pull" --------------------- receive an Information Packet handle from a connection unless it is empty; in which case suspend that process until more data arrives, and try again (if the connection is closed, report this fact)
- "push" --------------------- send an Information Packet handle to a connection unless it is full; in which case suspend that process until there is space in the connection again, and try again (if the connection is closed, report this fact)On Wed, Aug 23, 2017 at 11:25 AM, ern0 <er...@linkbroker.hu> wrote:> The problem is that we don't have a
> clear description of push and pull
...and there are several other types of how message passing and
processing related to each other (once, buffered push-pull mix,
sync-fix-one etc.).
--
ern0
dataflow evangelist
What if the information you need to pull is not sitting in a queue waiting to be consumed? What if it needs to be pulled from a large data store or some human's head?
Hi Paul,
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
--
Correct. Now pls tell me that Unix pipe connections are pull or push?
Stdin and stdout are libc IO buffers. Stdout can be "flushed" at any time using fflush(). You need to do that if you want the data to be written to the file or pipe immediately.
In addition to the greater flexibility of classical FBP, it is also simpler towrite components, because control flow need not be deformed into anevent loop or (whatever the push dual of an event loop is called, I don'tknow). They are written using a simple read-process-write pattern, likeany old BASIC program.--John Cowan http://vrici.lojban.org/~cowan co...@ccil.orgMy confusion is rapidly waxingFor XML Schema's too taxing:I'd use DTDs / If they had local trees --I think I best switch to RELAX NG.