I was imagining QuickCheck properties instead of unit tests...

On Wed, Feb 13, 2013 at 10:40 AM, Alan Kay <alan.n...@yahoo.com> wrote:
> Unit tests are just a small part of the kinds of description that could be
> used and are needed.
>
> ________________________________
> From: David Harris <dphar...@telus.net>
> To: Alan Kay <alan.n...@yahoo.com>; Fundamentals of New Computing
> <fonc@vpri.org>
> Sent: Wednesday, February 13, 2013 7:39 AM
>
> Subject: Re: [fonc] Terminology: "Object Oriented" vs "Message Oriented"
>
> 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
>
_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to