Applying the Linda analogy to object systems has been done before, perhaps most 
notably by Ehud Shapiro's work on Concurrent Prolog. Ehud once wrote a reply to 
Gertner in the Communications of the ACM, explaining how he could implement 
Tuple-space programs as logic programs. The Dining Philosopher's Problem was 
used as an example.

Even more recently we have things like TeaTime which furthers the tuple-space 
example with infinite backtracking. More broadly, Linda is just another 
implementation of the fully decoupled Observer pattern, where the Subject is 
decoupled from the Observer by a Registry object. TeaTime can then be seen as a 
further generalization to allow for multi-version concurrency control. Other 
systems and/or languages use the Observer pattern as a litnus test for type 
safety or true "safe" mutable state. Some people describe the problem in very 
weak languages as Callback Hell, because an unsafe non decoupled Ovserver 
pattern implementation doesn't have a fairness strategy or way to prioritize 
Observers out of the box. For example, should the first object to get a 
notification from the subject be the first to reply? What about race conditions 
and dirty reads due to the first ovserver causing a second change notification 
from the Subject?

It turns out these strategies like fairness and message prioritization can be 
built from a trustworthy core - as shown in the E language and first 
hypothesized by Hewitt in his Actor Model. In the Actor Model an actor can 
reorder messages and thus decide priority, even providing fairness which the 
Actor Model axioms say nothing about. In E, communication is handled by 'vats' 
which are essentially a different way to implement a Registry object to fully 
decouple the Subject and Observer and still provide fair resource allocation. 
Yet, E lacks static well-defined types for reasoning about behavior. So type 
theorists come along and ask if they can make a type safe Observable behavior 
that addresses these concerns - see Scala for example.

Hope this perspective on history helps.

Cheers, 
Z-Bo

Sent from my Droid Charge on Verizon 4GLTE

------Original Message------
From: Hans-Martin Mosner <h...@heeg.de>
To: "Fundamentals of New Computing" <fonc@vpri.org>
Date: Sunday, February 12, 2012 8:19:37 PM GMT+0100
Subject: Re: [fonc] COLAs or CLOAs? : are lambda systems fundamentally simpler 
than object systems?

Am 12.02.2012 20:01, schrieb Kurt Stephens:
> Many languages do not reify the message itself as an object.
>
I have been musing lately how the Linda model (tuple spaces) could be helpful.
Tuples can be understood as messages sent to an anonymous receiver (whoever 
does a "get" with a matching signature).
One nice analogy is that cell biology works pretty similar to that - proteins 
and other molecules are built from
constituents, flot freely (more or less) in the cytoplasm and cause effects 
when they bind to a matching site.
Of course, programming on this level alone seems pretty tedious - I don't know 
how well it scales to higher abstraction
levels. But it does have some nice practical consequences:
- the state of the system is defined by the tuples, so snapshotting and 
in-place software upgrading is relatively painless
- it lends itself well to parallelisation and distribution

Cheers,
Hans-Martin
_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to