<!doctype html public "-//W3C//DTD W3 HTML//EN">
<html><head><style type="text/css"><!--
blockquote, dl, ul, ol, li { margin-top: 0 ; margin-bottom: 0 }
 --></style><title>Re: jpython anyone?</title></head><body>
<div>Henrik --</div>
<div><br></div>
<div>Well, sort of...</div>
<div><br></div>
<div>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 &quot;=&quot;
is used in many languages, etc.). This is pretty fake.</div>
<div><br></div>
<div>More important to me is that even though &quot;syntax is not
important&quot;, most humans (even programmers) think that it is.
&quot;Even programmers&quot; 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.</div>
<div><br></div>
<div>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).</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; But I am much more interested in
children, parents, teachers, artists, etc., as users. I want programs
they<i> see</i> to look &quot;reasonable&quot; (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 &quot;gistable&quot; -- meaning that they can be
skimmed and some familar elements can be recognized.</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; 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
&quot;user interface&quot; 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.</div>
<div><br></div>
<div>One of the tricks here is to get away from thinking that
programs have to be composed with only a simple text editor.</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; For the last several years we have been
experimenting with children doing &quot;tile programming&quot; (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.</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; 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.)</div>
<div><br></div>
<div>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 &quot;omniusers&quot;) 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.</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; 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.</div>
<div><br></div>
<div>Cheers,</div>
<div><br></div>
<div>Alan</div>
<div><br></div>
<div>--------</div>
<div><br></div>
<div><br></div>
<div><br></div>
<div>At 1:06 PM +0100 11/23/00, Henrik Gedenryd wrote:</div>
<blockquote type="cite" cite>&gt; I had expected to see more in this
direction over the years. A famous<br>
&gt; (in its time and place) precursor with this approach was ROSIE,
a<br>
&gt; very nice expert systems language done at RAND in the late 70s
and<br>
&gt; early 80s. Have you seen it?<br>
<br>
There was some by now classical research done on natural language
interfaces<br>
in the early 80s. Put simply, the general conclusion was that it is a
bad<br>
idea to make a computer mimic humans, because users will then
attribute<br>
human capabilities to it that it doesn't have. (Think ELIZA.) This is
a<br>
basic social principle that we need in order to interact with others
(we<br>
can't read their minds). When we then attribute too much to the
computer,<br>
the breakdown that follows is very harsh, much more costly than what
is<br>
gained by familiarity when it works.<br>
<br>
It is much better to present the computer so that we will make
reasonable<br>
attributions. Math-like languages make us regard it as a math
machine, which<br>
is not that unreasonable.<br>
<br>
But of course, this didn't affect AI researchers much. The real
reason we<br>
haven't heard about progress in AI is that there hasn't been any to
speak<br>
of. The small successes in restricted, well-chosen domains have
never<br>
generalized, be it natural language processing, computer vision,
symbolic<br>
induction, or whatever. The term &quot;AI winter&quot; was coined in
the Lisp<br>
community in the late eighties. Today it seems that Bill Gates is
about the<br>
only one who still thinks that AI will be &quot;the next big
breakthrough&quot;. For<br>
the last 40 years, AI news stories have begun like this: &quot;Soon
they will be<br>
here--computers that xxxx&quot;. &quot;Don't hold your breath&quot;
is one of my favorite<br>
American expressions.<br>
<br>
&gt; The trick in most of these systems is not how hard it is for
the<br>
&gt; system to recognize a restricted English syntax, but how hard is
it<br>
&gt; for a random human to learn to write in the restricted
syntax.<br>
<br>
Would another way to put this be that the supposed advantage, being
easier<br>
to learn than more standard programming syntaxes, is not there?
&quot;Restricted&quot;<br>
here means that it looks like it's ordinary language but it isn't.
It<br>
doesn't let people use ordinary language.<br>
<br>
In fact, a main feature of natural language is not the syntax--but
the fact<br>
that most of the time we needn't be very precise at all with the
syntax to<br>
be understandable. _This_ is what a &quot;natural&quot; syntax
suggests to a user. And<br>
this is not what you want a user/programmer to belive, right?<br>
<br>
Syntax is a big deal in programming languages but not real ones; this
is a<br>
point that CS researches miss all the time. In fact, eg. Chomsky's
theories<br>
apply much better to programming languages than real ones. With all
the<br>
research on syntax, Markov chains (statistics about what words occur
close<br>
to each other) are still better predictors of word order in
&quot;real&quot; natural<br>
language than any theory of syntax.<br>
<br>
The hard problem in programming is figuring out what to do--you have
to<br>
understand the domain of available means (the language capabilities)
as well<br>
as well as the problem you are solving. Addressing syntax leaves this
alone,<br>
it only concerns how you express the solution once you have figured
it out.<br>
Programming languages are just meant to be means for expressing
solutions.<br>
What you need to address is the process of reaching solutions. The<br>
interactive environment of Smalltalk is the most important advance
that has<br>
been made so far: a compiler merely processes the solution, whereas
an<br>
interactive environment supports you while working out a solution.<br>
<br>
So to condense my point: we need to shift the focus from the form of
the<br>
expressed solution, to the process which produces it (and tools to
support<br>
this). But the nature of such cognitive tools has only begun to be
addressed<br>
in the last 5-10 years.<br>
<br>
<br>
Oops, there I did that rant again.<br>
<br>
Henrik</blockquote>
<div><br></div>
</body>
</html>