jpython anyone?
Alan Kay
Alan.Kay at disney.com
Thu Nov 23 16:25:35 UTC 2000
Henrik --
Well, sort of...
There is lots more to the story if one wants to break the ice with
human beings. First, we have to note that using mathematical notation
is only a little better with regard to meaning (since the computer
conventions are often very different (e.g. how "=" is used in many
languages, etc.). This is pretty fake.
More important to me is that even though "syntax is not important",
most humans (even programmers) think that it is. "Even programmers"
tend to imprint on the first syntax they learn (like Lorentz's ducks)
and resist learning other syntaxes. (A striking example is C's syntax
for conditionals, which was a hack, a bad idea, and not as nice as
conditional syntaxes that came before -- yet it is recapitulated in
many languages that came after just for reasons of familiarity.) One
of the most wonderful languages ever invented is LISP and many many
programmers have never realized it because they were put off by its
syntax, etc.
If I were interested in having the main users for the media stuff in
Squeak be programmers, then I would consider taking some syntax they
are used to and putting it in as an alternative (and there are a
number of people on this list that continue to discuss this as an
option).
But I am much more interested in children, parents, teachers,
artists, etc., as users. I want programs they see to look
"reasonable" (even if there are new ideas to be learned underneath --
and this is true of writing about new ideas in a natural language
like English or Swedish). I want the programs to be "gistable" --
meaning that they can be skimmed and some familar elements can be
recognized.
A hero of mine here is Martin Luther, who considered whether he
should try to find out how to teach Latin to all of Germany so they
could read the bible for themselves, or whether he should try to give
the German language more structure so that it could more easily have
the bible translated into it. He wisely chose the latter, and I think
this was one of the big "user interface" insights in history: that
you should always find a way to start where the endusers are, and
then help them grow into the big ideas.
One of the tricks here is to get away from thinking that programs
have to be composed with only a simple text editor.
For the last several years we have been experimenting with
children doing "tile programming" (as in the current etoy authoring
in Squeak). The idea here is that the system only lets you construct
syntactically correct programs. If this works, then the syntax can be
as readable as one wishes. This is an old idea, and the problems with
this approach over the years have been awkwardness, fatigue and
distraction while trying to think through how the program should work.
Almost by accident this time around, we took phrases derived
from message headings (with sample values inserted in the parameters
as defaults) as the basic building block. With some sweet work by SqC
the act of picking up tile phrases and dropping them in scripts
became a pleasant (even somewhat sensual) act, and we (I was anyway)
quite surprised in extensive testing with children that a far far
larger percentage of them became extremely motivated creators and
programmers in this system than in 25 years of previous experience.
(There were a few other factors operating here as well that
contributed to the success of these experiments.)
We realized that it would be really neat to be able to make something
similar work with Squeak in general, and that an interesting way to
approach a readable yet highly learnable enduser (we call them
"omniusers") syntax would be exhibit programs in a highly readable
syntax and that editing and composing would be mediated by
generalizations of the UI techniques that had worked with the
children.
Quite a bit has been accomplished over the last six months, and
we will shortly release the first version of this authoring system
for the critiques of the Squeak List.
Cheers,
Alan
--------
At 1:06 PM +0100 11/23/00, Henrik Gedenryd wrote:
> > I had expected to see more in this direction over the years. A famous
>> (in its time and place) precursor with this approach was ROSIE, a
>> very nice expert systems language done at RAND in the late 70s and
>> early 80s. Have you seen it?
>
>There was some by now classical research done on natural language interfaces
>in the early 80s. Put simply, the general conclusion was that it is a bad
>idea to make a computer mimic humans, because users will then attribute
>human capabilities to it that it doesn't have. (Think ELIZA.) This is a
>basic social principle that we need in order to interact with others (we
>can't read their minds). When we then attribute too much to the computer,
>the breakdown that follows is very harsh, much more costly than what is
>gained by familiarity when it works.
>
>It is much better to present the computer so that we will make reasonable
>attributions. Math-like languages make us regard it as a math machine, which
>is not that unreasonable.
>
>But of course, this didn't affect AI researchers much. The real reason we
>haven't heard about progress in AI is that there hasn't been any to speak
>of. The small successes in restricted, well-chosen domains have never
>generalized, be it natural language processing, computer vision, symbolic
>induction, or whatever. The term "AI winter" was coined in the Lisp
>community in the late eighties. Today it seems that Bill Gates is about the
>only one who still thinks that AI will be "the next big breakthrough". For
>the last 40 years, AI news stories have begun like this: "Soon they will be
>here--computers that xxxx". "Don't hold your breath" is one of my favorite
>American expressions.
>
>> The trick in most of these systems is not how hard it is for the
>> system to recognize a restricted English syntax, but how hard is it
>> for a random human to learn to write in the restricted syntax.
>
>Would another way to put this be that the supposed advantage, being easier
>to learn than more standard programming syntaxes, is not there? "Restricted"
>here means that it looks like it's ordinary language but it isn't. It
>doesn't let people use ordinary language.
>
>In fact, a main feature of natural language is not the syntax--but the fact
>that most of the time we needn't be very precise at all with the syntax to
>be understandable. _This_ is what a "natural" syntax suggests to a user. And
>this is not what you want a user/programmer to belive, right?
>
>Syntax is a big deal in programming languages but not real ones; this is a
>point that CS researches miss all the time. In fact, eg. Chomsky's theories
>apply much better to programming languages than real ones. With all the
>research on syntax, Markov chains (statistics about what words occur close
>to each other) are still better predictors of word order in "real" natural
>language than any theory of syntax.
>
>The hard problem in programming is figuring out what to do--you have to
>understand the domain of available means (the language capabilities) as well
>as well as the problem you are solving. Addressing syntax leaves this alone,
>it only concerns how you express the solution once you have figured it out.
>Programming languages are just meant to be means for expressing solutions.
>What you need to address is the process of reaching solutions. The
>interactive environment of Smalltalk is the most important advance that has
>been made so far: a compiler merely processes the solution, whereas an
>interactive environment supports you while working out a solution.
>
>So to condense my point: we need to shift the focus from the form of the
>expressed solution, to the process which produces it (and tools to support
>this). But the nature of such cognitive tools has only begun to be addressed
>in the last 5-10 years.
>
>
>Oops, there I did that rant again.
>
>Henrik
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20001123/a97358d7/attachment.htm
More information about the Squeak-dev
mailing list
|