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