Randy Smith rsmith at parc.xerox.com
Tue Nov 6 18:56:52 UTC 1990

I actually tried the "programming by rehearsal" style in ARK at one
point, and I too have been thinking that it might be an interesting
thing to try for the Self UI.  It has certain advantages as Jecel points
out, and it fits well with the concreteness goal of the Self UI.  I also
like the story that the execution of a method, which involves a sequence
of computer actions in time, is created by a sequence of user actions in
time. (David Smith  argues this point eloquently in his well-written
thesis, which describes "Pygmalion," a very "pure" demonstration style
programming system.)

Programming by Rehearsal type systems typically suffer from the problem
of determining what's variable and what's fixed.  That is, when I
involve the number 3 in a calculation, do I mean the constant 3, or do I
mean the size of that particular array over there that happens to have 3
elements now, but could have 5 when I execute this method?

Brad Meyers used domain knowledge to disambiguate this kind of stuff in
"Peridot," a UIMS that lets you build mouse/ menu/scroll bar type stuff
by demonstration. 

In the Self UI that Bay is working on, the problem goes away (am I
right?) if one is willing to reference objects by literally acting out
the intended message sending path that would be used to reach the object
at run time.  I think this would work better for Self than for ARK,
since ARK was trying to represent Smalltalk and message sending is not
the whole story there.

Other issues: 
1]  In textual programming, it is super light weight to flit ones gaze
up and down the page, essentially moving back and forth in time within
the execution story.  In demonstration style programming, how do you do
the analogous thing when examining a method that you are "writing?" Is
it a problem to give up the light weightness of this "time browsing"
2] How do you do blocks? (ifTrue: [...] ifFalse: [...])
3]  A kind of use/mention ambiguity shows up in demonstration style
systems in interesting ways at times.  (i.e.: Computer to user: "Hey ...
Did you do that action incidentally,  just to help you tell me what to
do -- or do you really mean I am supposed to do that when I run?")

Glad to hear people cogitating on this stuff -- fascinating.

More information about the Self-interest mailing list