[fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Loup Vaillant

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


Re: [fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Alan Kay
Hi Loup

I think how this happened has already been described in The Early History of 
Smalltalk. 

But 

In the Fall of 1966, Sketchpad was what got me started thinking about 
representing concepts as whole things. Simula, a week later, provided a 
glimpse of how one could deal with issues that couldn't be done wonderfully 
with constraints and solving (namely, you could hide procedures inside the 
entities). 

This triggered off many thoughts in a few minutes, bringing in ideas that 
seemed similar from biology, math (algebras), logic (Carnap's intensional 
logic), philosophy (Plato's Ideas), hardware (running multiple active units 
off a bus), systems design (the use of virtual machines in time-sharing), and 
networking (the ARPA community was getting ready to do the ARPAnet). Bob Barton 
had pronounced that recursive design is making the parts have the same powers 
as the wholes, which for the first time I was able to see was really powerful 
if the wholes and the parts were entire computers hardware or software or some 
mixture.

The latter was hugely important to me because it allowed a universal 
simulation system to be created from just a few ideas that would cover 
everything and every other kind of thing.

During this period I had no label for what I was doing, including this thing I 
was doing, I was just doing.

A few months later someone asked me what I was doing, and I didn't think about 
the answer -- I was still trying to see how the synthesis of ideas could be 
pulled off without a lot of machinery (kind of the math stage of the process).

Back then, there was already a term in use called data driven programming. 
This is where data contains info that will help find appropriate procedures. 

And the term objects was also used for composite data i.e. blocks of 
storage with different fields containing values of various kinds. This came 
naturally from card images (punched cards were usually 80 or more characters 
long and divided into fields). 

At some point someone (probably in the 50s) decided to use some of the fields 
to help the logic of plug board programming and drive the processes off the 
cards rather than just processing them.


So if you looked at how Sketchpad was implemented you would see, in the terms 
of the day: objects that were data driven. Ivan gives Doug Ross credit for 
his plex structures, which were an MIT way to think about these ideas. 
Sketchpad also used threaded lists in its blocks (this was not a great idea 
but it was popular back then -- Simula later took this up as well).

So I just said object oriented programming and went back to work.

Later I regretted this (and some of the other labels that were also put in 
service) after the ideas worked out nicely and were very powerful for us at 
PARC. 

The success of the ideas made what we were doing popular, and people wanted to 
be a part of it. This led to using the term object oriented as a designer 
jeans label for pretty much anything (there was even an object-oriented 
COBOL!). This appropriation of labels without content is a typical pop culture 
fantasy football syndrome.

PARC was an integral part of the ARPA community, the last gasp of which in the 
70s was designing the Internet via a design group that contained PARC people 
(PARC had actually already done an internetwork -- called PUP -- with 
gateways (routers) to interconnect Ethernetworks and other networks within 
Xerox).

It was clear to all in this community from the mid-60s onward that how 
messaging was done was one of the keys to achieving scaling. This is why 
what I was working on had messages as the larger coordination idea (rather 
than the subset of calls).


At PARC we wanted to do a complete personal computing system on the Alto, which 
was a microcoded ~150ns cycle CPU with 16 program counters and 64k 16bit words 
of memory that cycled at ~750ns (where half of this memory was used for the 
bit-map of the display). The next level memory was not a swapping disk but a 
slower removable disk with about 2.5MBytes capacity.

The good news was that the Alto was fast enough to run Smalltalk byte codes and 
bitblt, etc. to allow executables to be small and powerful. The bad news was 
that it wasn't quite fast enough to do real messaging. The good news was that 
Smalltalk was powerful expressively, and this allowed the whole size of the 
system including OS, language, apps, UI, etc., to be tiny (about 10K lines of 
program code initially). This allowed us to pretend we had messaging but to 
actually do procedure calls under the covers and get away with it (one of the 
ideas was to not manifest a message unless someone wanted to see it -- this 
was part of the magic of Dan Ingalls' design).

So I think the problem with messaging was partly that it was the more subtle 
and invisible idea and this verb part) got lost because the representational 
noun part got all the attention. (And we generally don't think of noun-like 
things as in 

Re: [fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Brown, John Mickey
Dude….   You said shiny objects….Lol.

Messaging certainly seems to have a larger focus with multi-core, many-core, 
and cloud computing concepts (that itself is morphing into shiny objects).
I also enjoy these history lessons and discussions.

John

From: David Hussman david.huss...@devjam.commailto:david.huss...@devjam.com
Reply-To: Fundamentals of New Computing fonc@vpri.orgmailto:fonc@vpri.org
Date: Tue, 12 Feb 2013 11:36:35 -0500
To: 'Alan Kay' alan.n...@yahoo.commailto:alan.n...@yahoo.com, 'Fundamentals 
of New Computing' fonc@vpri.orgmailto:fonc@vpri.org
Subject: Re: [fonc] Terminology: Object Oriented vs Message Oriented

Alan,

Thanks for the thoughtful words / history. I am a lurker on this group and I 
dig seeing this kind of dialog during times when I am so often surrounded by 
bright shiny object types.

David

From: fonc-boun...@vpri.orgmailto:fonc-boun...@vpri.org 
[mailto:fonc-boun...@vpri.org] On Behalf Of Alan Kay
Sent: Tuesday, February 12, 2013 10:23 AM
To: Fundamentals of New Computing
Subject: Re: [fonc] Terminology: Object Oriented vs Message Oriented

Hi Loup

I think how this happened has already been described in The Early History of 
Smalltalk.

But 

In the Fall of 1966, Sketchpad was what got me started thinking about 
representing concepts as whole things. Simula, a week later, provided a 
glimpse of how one could deal with issues that couldn't be done wonderfully 
with constraints and solving (namely, you could hide procedures inside the 
entities).

This triggered off many thoughts in a few minutes, bringing in ideas that 
seemed similar from biology, math (algebras), logic (Carnap's intensional 
logic), philosophy (Plato's Ideas), hardware (running multiple active units 
off a bus), systems design (the use of virtual machines in time-sharing), and 
networking (the ARPA community was getting ready to do the ARPAnet). Bob Barton 
had pronounced that recursive design is making the parts have the same powers 
as the wholes, which for the first time I was able to see was really powerful 
if the wholes and the parts were entire computers hardware or software or some 
mixture.

The latter was hugely important to me because it allowed a universal 
simulation system to be created from just a few ideas that would cover 
everything and every other kind of thing.

During this period I had no label for what I was doing, including this thing I 
was doing, I was just doing.

A few months later someone asked me what I was doing, and I didn't think about 
the answer -- I was still trying to see how the synthesis of ideas could be 
pulled off without a lot of machinery (kind of the math stage of the process).

Back then, there was already a term in use called data driven programming. 
This is where data contains info that will help find appropriate procedures.

And the term objects was also used for composite data i.e. blocks of 
storage with different fields containing values of various kinds. This came 
naturally from card images (punched cards were usually 80 or more characters 
long and divided into fields).

At some point someone (probably in the 50s) decided to use some of the fields 
to help the logic of plug board programming and drive the processes off the 
cards rather than just processing them.

So if you looked at how Sketchpad was implemented you would see, in the terms 
of the day: objects that were data driven. Ivan gives Doug Ross credit for 
his plex structures, which were an MIT way to think about these ideas. 
Sketchpad also used threaded lists in its blocks (this was not a great idea 
but it was popular back then -- Simula later took this up as well).

So I just said object oriented programming and went back to work.

Later I regretted this (and some of the other labels that were also put in 
service) after the ideas worked out nicely and were very powerful for us at 
PARC.

The success of the ideas made what we were doing popular, and people wanted to 
be a part of it. This led to using the term object oriented as a designer 
jeans label for pretty much anything (there was even an object-oriented 
COBOL!). This appropriation of labels without content is a typical pop culture 
fantasy football syndrome.

PARC was an integral part of the ARPA community, the last gasp of which in the 
70s was designing the Internet via a design group that contained PARC people 
(PARC had actually already done an internetwork -- called PUP -- with 
gateways (routers) to interconnect Ethernetworks and other networks within 
Xerox).

It was clear to all in this community from the mid-60s onward that how 
messaging was done was one of the keys to achieving scaling. This is why 
what I was working on had messages as the larger coordination idea (rather 
than the subset of calls).

At PARC we wanted to do a complete personal computing system on the Alto, which 
was a microcoded ~150ns cycle CPU with 16 program counters and 64k 16bit words 
of memory that cycled at ~750ns (where half of 

Re: [fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Loup Vaillant

Alan Kay a écrit :

Hi Loup

I think how this happened has already been described in The Early
History of Smalltalk.

But 

[Incredibly detailed and thoughtful response]


Whoa. Thank you.

Loup

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


Re: [fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Göran Krampe

Hi!

On 02/12/2013 04:15 PM, Loup Vaillant wrote:

This question was prompted by a quote by Joe Armstrong about OOP[1].


Sidenote, the article Joe wrote on OO which I subsequently bashed:

http://goran.krampe.se/2009/06/26/joe-is-wrong/

...but I met him later and he knows OO quite well these days - and is 
also friends with several of our luminaries.


regards, Göran
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Miles Fidelman

Alan Kay wrote:

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 ...


Alan,

As I recall, some of your early writings on Smalltalk sounded very 
actor-like - i.e., objects as processes, with lots of messages floating 
around, rather than a sequential thread-of-control model. Or is my 
memory just getting fuzzy?  In any case, I'm surprised that the term 
actor hasn't popped up in this thread, along with object and 
messaging.


Miles Fidelman



--
In theory, there is no difference between theory and practice.
In practice, there is.    Yogi Berra

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


Re: [fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Alan Kay
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 

Re: [fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Alan Kay
Hi Miles

(Again The Early History of Smalltalk has some of this history ...)

It is unfair to Carl Hewitt to say that Actors were his reaction to 
Smalltalk-72 (because he had been thinking early thoughts from other 
influences). And I had been doing a lot of thinking about the import of his 
Planner language.

But that is the simplest way of stating the facts and the ordering. 

ST-72 and the early Actors follow on were very similar. The Smalltalk that 
didn't get made, -71, was a kind of merge of the object idea, Logo, and 
Carl's Planner system (which predated Prolog and was in many respects more 
powerful). Planner used pattern-directed invocation and I thought you could 
both receive messages with it if it were made the interface of an object, and 
also use it for deduction. Smalltalk-72 was a bit of an accident

The divergence later was that we got a bit dirtier as we made a real system 
that you could program a real system in. Actors got cleaner as they looked at 
many interesting theoretical possibilities for distributed computing etc. My 
notion of object oriented would now seem to be very actor-like.

Cheers,

Alan





 From: Miles Fidelman mfidel...@meetinghouse.net
To: Fundamentals of New Computing fonc@vpri.org 
Sent: Tuesday, February 12, 2013 11:05 AM
Subject: Re: [fonc] Terminology: Object Oriented vs Message Oriented
 
Alan Kay wrote:
 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 ...

Alan,

As I recall, some of your early writings on Smalltalk sounded very actor-like 
- i.e., objects as processes, with lots of messages floating around, rather 
than a sequential thread-of-control model. Or is my memory just getting fuzzy? 
 In any case, I'm surprised that the term actor hasn't popped up in this 
thread, along with object and messaging.

Miles Fidelman



-- In theory, there is no difference between theory and practice.
In practice, there is.    Yogi Berra

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


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


Re: [fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Miles Fidelman

Hi Alan,

Is it fair to say that the path you took with Smalltalk led to today's 
object model of data structures, associated methods, and inheritance, 
with either a single thread-of-control, or small numbers of threads; 
while the Actor model led (perhaps not directly) to massive concurrency 
and Erlang?  (I'm still waiting for something that looks like Smalltalk 
meets Erlang.)


Cheers,

Miles

Alan Kay wrote:

Hi Miles

(Again The Early History of Smalltalk has some of this history ...)

It is unfair to Carl Hewitt to say that Actors were his reaction to 
Smalltalk-72 (because he had been thinking early thoughts from other 
influences). And I had been doing a lot of thinking about the import 
of his Planner language.


But that is the simplest way of stating the facts and the ordering.

ST-72 and the early Actors follow on were very similar. The Smalltalk 
that didn't get made, -71, was a kind of merge of the object idea, 
Logo, and Carl's Planner system (which predated Prolog and was in many 
respects more powerful). Planner used pattern-directed invocation 
and I thought you could both receive messages with it if it were made 
the interface of an object, and also use it for deduction. 
Smalltalk-72 was a bit of an accident


The divergence later was that we got a bit dirtier as we made a real 
system that you could program a real system in. Actors got cleaner as 
they looked at many interesting theoretical possibilities for 
distributed computing etc. My notion of object oriented would now 
seem to be very actor-like.


Cheers,

Alan



*From:* Miles Fidelman mfidel...@meetinghouse.net
*To:* Fundamentals of New Computing fonc@vpri.org
*Sent:* Tuesday, February 12, 2013 11:05 AM
*Subject:* Re: [fonc] Terminology: Object Oriented vs Message
Oriented

Alan Kay wrote:
 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 ...

Alan,

As I recall, some of your early writings on Smalltalk sounded very
actor-like - i.e., objects as processes, with lots of messages
floating around, rather than a sequential thread-of-control model.
Or is my memory just getting fuzzy?  In any case, I'm surprised
that the term actor hasn't popped up in this thread, along with
object and messaging.

Miles Fidelman



-- In theory, there is no difference between theory and practice.
In practice, there is.   Yogi Berra

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




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



--
In theory, there is no difference between theory and practice.
In practice, there is.    Yogi Berra

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


Re: [fonc] Terminology: Object Oriented vs Message Oriented

2013-02-12 Thread Miles Fidelman

John Carlson wrote:


Is there a computer language (yes I realize games do this) that work 
like human languages?  With features like misdirection, 
misinterpretation, volume, persuasion?  Can we come up with a social 
language for computers?  No, I'm not talking lojban, I'm talking 
something something semantically and/or syntactically ambiguous.  
Maybe lingodroids is close. More work in this area would be interesting.




Well PPL (Paranoid Programming Language) might come close. 
http://zzo38computer.org/backup/paranoid-programming-language.html :-)


--
In theory, there is no difference between theory and practice.
In practice, there is.    Yogi Berra

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


[fonc] Design of web, POLs for rules. Fuzz testing nile

2013-02-12 Thread John Carlson
Although I have read very little about the design of the web, things are
starting to gel in my mind.  At the lowest level lies the static or
declarative part of the web.  The html, dom, xml and json are the main
languages used in the declarative part.  Layered on top of this is the
dynamic or procedural part of the web.  Javascript and xslt are the main
languages in the procedural part.   The final level is the constraints or
rule based part of the web, normally called stylesheets.  The languages in
the rule based web are css1, 2, 3 and xsl. Jquery provides a way to apply
operations in this arena.  I am excluding popular server side
languages...too many.

What I am wondering is what is the best way to incorporate rules into a
language.  Vrml has routes.  Uml has ocl. Is avoiding if statements and
for/while loops the goal of rules languages--that syntax?  That is, do a
query or find, and apply the operations or rules to all returned values.

Now, if I wanted to apply probabilistic or fuzzy rules to the dom, that
seems fairly straightforward.  Fuzz testing does this moderately well.  Has
there been attempts at better fuzz testing? Fuzz about fuzz?  Or is brute
force best?

We've also seen probablistic parser generators, correct?

But what about probablistic rules?  Can we design an ultimate website w/o a
designer?  Can we use statistics to create a great solitaire player--i have
a pretty good stochastic solitaire player for one version of
solitaire...how about others?  How does one create a great set of rules?
One can create great rule POLs, but where are the authors?  Something like
cameron browne's thesis seems great for grid games.  He is quite prolific.
Can we apply the same logic to card games? Web sites?  We have The Nature
of Order by c. Alexander.  Are there nile designers or fuzz
testers/genetic algorithms for nile?
Is fuzz testing a by product of nile design...should it be?

If you want to check out the state of the art for dungeons and dragons POLs
check out fantasy grounds...xml hell.  We can do better.
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc