This sounds suspiciously like Unit Testing, which is basically "When I say this, you should answer that." Thos are precomputed answers, but could be computed I suppose -- so a bit like your Postscript example ... you send the Testing-Agent down the pipe.
David On Wed, Feb 13, 2013 at 7:26 AM, Alan Kay <alan.n...@yahoo.com> wrote: > Hi Thiago > > I think you are on a good path. > > One way to think about this problem is that the broker is a human > programmer who has received a module from half way around the world that > claims to provide important services. The programmer would confine it in an > address space and start doing experiments with it to try to discover what > it does (and/or perhaps how well its behavior matches up to its claims). > Many of the discovery approaches of Lenat in AM and Eurisko could be very > useful here. > > Another part of the scaling of modules approach could be to require > modules to have much better models of the environments they expect/need in > order to run. > > For example, suppose a module has a variable that it would like to refer > to some external resource. Both static and dynamic typing are insufficient > here because they are only about kinds of results rather than meanings of > results. > > But we could readily imagine a language in which the variable had > associated with it a "dummy" or "stand-in" model of what is desired. It > could be a slow version of something we are hoping to get a faster version > of. It could be sample values and tests, etc. All of these would be useful > for debugging our module -- in fact, we could make this a requirement of > our module system, that the modules carry enough information to allow them > to be debugged with only their own model of the environment. > > And the more information the model has, the easier it will be for a > program to see if the model of an environment for a module matches up to > possible modules out in the environment when the system is running for real. > > Cheers, > > Alan > > ------------------------------ > *From:* Thiago Silva <tsi...@sourcecraft.info> > *To:* fonc <fonc@vpri.org> > *Sent:* Wednesday, February 13, 2013 2:09 AM > *Subject:* Re: [fonc] Terminology: "Object Oriented" vs "Message Oriented" > > Hello, > > as I was thinking over these problems today, here are some initial > thoughts, > just to get the conversation going... > > > The first time I read about the Method Finder and Ted's memo, I tried to > grasp > the broader issue, and I'm still thinking of some interesting examples to > explore. > > I can see the problem of finding operations by their meanings, the problem > of > finding objects by the services they provide and the overal structure of > the > discovery, negotiation and binding. > > My feeling is that, besides using worlds as mechanism, an explicit > "discovery" > context may be required (though I can't say much without further > experimentations), specially when trying to figure out operations that > don't > produce a distinguishable value but rather change the state of computation > (authenticating, opening a file, sending a message through the network, > etc) > or when doing remote discovery. > > For brokering (and I'm presuming the use of such entities, as I could not > get > rid of them in my mind so far), my first thought was that a chain of > brokers > of some sorts could be useful in the architecture where each could have > specific ways of mediating discovery and negotiation through the "levels" > (or > narrowed options, providing isolation for some services. Worlds come to > mind). > > During the "binding time", I think it would be important that some > requirements of the client could be relaxed or even be tagged optional to > allow the module to execute at least a subset of its features (or to > execute > features with suboptimal operations) when full binding isn't possible -- > though this might require special attention to guarantee that eg. disabling > optional features don't break the execution. > > Further, different versions of services may require different kinds of > pre/post-processing (eg. initialization and finalization routines). When > abstracting a service (eg. storage) like this, I think it's when the "glue > code" starts to require sophistication (because it needs to fill more > blanks)...and to have it automated, the provider will need to make > requirements to the client as well. This is where I think a common > vocabulary > will be more necessary. > > -- > Thiago > > Excerpts from Alan Kay's message of 2013-02-12 16:12:40 -0300: > > Hi Jeff > > > > I think "intermodule communication schemes" that *really scale* is one > of the most important open issues of the last 45 years or so. > > > > It is one of the several "pursuits" written into the STEPS proposal that > we didn't use our initial efforts on -- so we've done little to advance > this over the last few years. But now that the NSF funded part of STEPS has > concluded, we are planning to use much of the other strand of STEPS to look > at some of these neglected issues. > > > > There are lots of facets, and one has to do with messaging. The idea > that "sending a message" has scaling problems is one that has been around > for quite a while. It was certainly something that we pondered at PARC 35 > years ago, and it was an issue earlier for both the ARPAnet and its > offspring: the Internet. > > > > Several members of this list have pointed this out also. > > > > There are similar scaling problems with the use of tags in XML and EMI > etc. which have to be agreed on somehow > > > > > > Part of the problem is that for vanilla sends, the sender has to know > the receiver in some fashion. This starts requiring the interior of a > module to know too much if this is a front line mechanism. > > > > This leads to wanting to do something more like LINDA "coordination" or > "publish and subscribe" where there are pools of producers and consumers > who don't have to know explicitly about each other. A "send" is now a > general request for a resource. But the vanilla approaches here still > require that the "sender" and "receiver" have a fair amount of common > knowledge (because the matching is usually done on "terms in common"). > > > > For example, in order to invoke a module that will compute the sine of > an angle, do you and the receiver both have to agree about the term "sine"? > In APL I think the name of this function is "circle 1" and in Smalltalk > it's "degreeSin", etc. > > > > Ted Kaehler solved this problem some years ago in Squeak Smalltalk with > his "message finder". For example, if you enter 3. 4. 7 Squeak will > instantly come back with: > > 3 bitOr: 4 --> 7 > > 3 bitXor: 4 --> 7 > > 3 + 4 --> 7 > > > > For the sine example you would enter 30. 0.5 and Squeak will come up > with: > > 30 degreeSin --> 0.5 > > > > The method finder is acting a bit like Doug Lenat's "discovery" systems. > Simple brute force is used here (Ted executes all the methods that could > fit in the system safely to see what they do.) > > > > One of the solutions at PARC for dealing with a part of the problem is > the idea of "send an agent, not a message". It was quickly found that > defining file formats for all the different things that could be printed on > the new laser printer was not scaling well. The solution was to send a > program that would just execute safely and blindly in the printer -- the > printer would then just print out the bit bin. This was known as PostScript > when it came out in the world. > > > > The "Trickles" idea from Cornell has much of the same flavor. > > > > One possible starting place is to notice that there are lots more terms > that people can use than the few that are needed to make a powerful compact > programming language. So why not try to describe meanings and match on > meanings -- and let there be not just matching (which is like a password) > but "negotiation", which is what a discovery agent does. > > > > And so forth. I think this is a difficult but doable problem -- it's > easier than AI, but has some tinges of it. > > > > Got any ideas? > > > > Cheers, > > > > Alan > > > > >________________________________ > > > From: Jeff Gonis <jeff.go...@gmail.com> > > >To: Alan Kay <alan.n...@yahoo.com> > > >Cc: Fundamentals of New Computing <fonc@vpri.org> > > >Sent: Tuesday, February 12, 2013 10:33 AM > > >Subject: Re: [fonc] Terminology: "Object Oriented" vs "Message Oriented" > > > > > > > > >I see no one has taken Alan's bait and asked the million dollar > question: if you decided that messaging is no longer the right path for > scaling, what approach are you currently using? > > >I would assume that FONC is the current approach, meaning, at the risk > of grossly over-simplifying and sounding ignorant, "problem oriented > languages" allowing for compact expression of meaning. But even here, FONC > struck me as providing vastly better ways of creating code that, at its > core, still used messaging for robustness, etc, rather than using something > entirely different. > > >Have I completely misread the FONC projects? And if not messaging, what > approach are you currently using to handle scalability? > > >A little more history ... > > > > > > > > >The first Smalltalk (-72) was "modern" (as used below), and similar to > Erlang in several ways -- for example, messages were received with > "structure and pattern matching", etc. The language was extended using the > same mechanisms ... > > > > > > > > >Cheers, > > > > > > > > > > > >Alan > > > > > > > > > > > >>________________________________ > > >> From: Brian Rice <briantr...@gmail.com> > > >>To: Fundamentals of New Computing <fonc@vpri.org> > > >>Sent: Tuesday, February 12, 2013 8:54 AM > > >>Subject: Re: [fonc] Terminology: "Object Oriented" vs "Message > Oriented" > > >> > > >> > > >>Independently of the originally-directed historical intent, I'll pose > my own quick perspective. > > >> > > >>Perhaps a contrast with Steve Yegge's Kingdom of Nouns essay would > help: > > >> > http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html > > >> > > >> > > >> > > >>The modern post-Erlang sense of message-oriented computing has to do > with messages with structure and pattern-matching, where error-handling > isn't about sequential, nested access, but more about independent > structures dealing with untrusted noise. > > >> > > >> > > >>Anyway, treating the messages as first-class objects (in the Lisp > sense) is what gets you there: > > >>http://www.erlang.org/doc/getting_started/conc_prog.html > > >> > > >> > > >> > > >> > > >> > > >> > > >>On Tue, Feb 12, 2013 at 7:15 AM, Loup Vaillant <l...@loup-vaillant.fr> > wrote: > > >> > > >>This question was prompted by a quote by Joe Armstrong about OOP[1]. > > >>>It is for Alan Kay, but I'm totally fine with a relevant link. Also, > > >>>"I don't know" and "I don't have time for this" are perfectly okay. > > >>> > > >>>Alan, when the term "Object oriented" you coined has been hijacked by > > >>>Java and Co, you made clear that you were mainly about messages, not > > >>>classes. My model of you even says that Erlang is far more OO than > Java. > > >>> > > >>>Then why did you chose the term "object" instead of "message" in the > > >>>first place? Was there a specific reason for your preference, or did > > >>>you simply not bother foreseeing any terminology issue? (20/20 > hindsight and such.) > > >>> > > >>>Bonus question: if you had choose "message" instead, do you think it > > >>>would have been hijacked too? > > >>> > > >>>Thanks, > > >>>Loup. > > >>> > > >>> > > >>>[1]: http://news.ycombinator.com/item?id=5205976 > > >>> (This is for reference, you don't really need to read it.) > > >>>_______________________________________________ > > >>>fonc mailing list > > >>>fonc@vpri.org > > >>>http://vpri.org/mailman/listinfo/fonc > > >>> > > >> > > >> > > >> > > >>-- > > >>-Brian T. Rice > > >>_______________________________________________ > > >>fonc mailing list > > >>fonc@vpri.org > > >>http://vpri.org/mailman/listinfo/fonc > > >> > > >> > > >> > > >_______________________________________________ > > >fonc mailing list > > >fonc@vpri.org > > >http://vpri.org/mailman/listinfo/fonc > > > > > > > > > > > > > -- > []'s > Thiago Silva > http://www.metareload.com > > "We are either doing something or we are not; 'talking about' is a subset > of 'not'." > _______________________________________________ > fonc mailing list > fonc@vpri.org > http://vpri.org/mailman/listinfo/fonc > > > > _______________________________________________ > fonc mailing list > fonc@vpri.org > http://vpri.org/mailman/listinfo/fonc > >
_______________________________________________ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc