End-User Programming by Alan Kay (1991)

From Viewpoints Intelligent Archive
Revision as of 20:35, 5 December 2017 by Ohshima (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
okay so next next year will actually be
the what I consider to be the 30th anniversary of this endeavor which is
called end-user programming and this talk today is sort of it's different
from the many talks that are that are given at Apple and elsewhere because
most talks are given about minor successes and what I'd like to do is
talk to you about a major failure and that it is a failure that has spun off
absolutely major successes but it is
never converged on its main objective
which is to get end-users to be able to
work build things aspire to build things
on the same kind of level that professional programmers build them and
the reason I'm saying it that way is that when we teach somebody to write in
English we don't say you'll only pass at
this endeavor if you wind up writing a Shakespearean sonnet or a play that is
we have levels of what it means to be literate in reading and writing but the
language that we try and teach people to use and to teach people to write is the
same language that the great artists use
likewise when we teach people to paint or teach people on a musical instrument
we're generally best off if we are using the same kind of musical instrument that
somebody great also uses the so that the
idea is that the end users should be able to aspire to the kinds of things
that they find in their environment in
the case of the Macintosh it means that the end users should be able to aspire
to the kinds of things that they see on the Mac every day that they go out and buy it in
King's software they may not ever want to put themselves in the position of
having to build one of those things with the kinds of smaller things that they
build should be built sort of out of the same kinds of building blocks that they
think these other applications are built
like and I guess I'd like to start off with what I consider to be the prime
theorem of all of this work and that is
that the end users are not like us and
this is a sort of a bell curve theory of life which says that in any endeavor and
a population say about this size that 3
to 5 percent in that population will be fairly well pre-wired for learning
whatever it is it's gonna be a different 5% for each different kind of thing and
only a few exceptional people are pre-wired for lots of things but you
know some people have terrific control over their body and can learn a new
physical coordination fairly easily and
reason I put it in a bell curves not because I believe in normal distributions but it's sort of a way of
contrasting the way social scientists
think of human beings with observations
and I sort of split it up that instead of worrying about the six standard
deviations that these bell curves are wide I just think of it as 5% 85 and 10
and that most of the endeavor in any
kind of learning environment is actually
devoted to doing something with the 85 the ID 5% are the ones who have enough
precursors to build structures that the
knowledge can be fit into they are the ones that go somewhere to learn a method
or a technique and the kinds of fact
this is my second question is how many people presume everybody in this room is a
professional programmer is that true anybody here not a professional
programmer okay a couple of people so of the professional programmers how many
people here felt that they had any great difficulty in learning how to program
honestly anything not just learning a
language no learning Pascal learning C learning machine code APL let's just
take let's just take the garden-variety one so and I followed that category to
none of us had any particular difficulty doing that you know there was there are
some things we had to learn there are lots of things that we had to learn and we sometimes founded a wrench to go from
one language to another my own personal experience I started programming in 1961
and I found that the first 5 or 6 machine codes that I learned interfered
with each other but after that there wasn't any interference because I soon realized that the the objective of
programming was not to remember machine codes but to remember other things that
you program in terms of and then you just find the way the Machine does those
things and that's sort of the transition from a beginner intermediate to an
expert as we'll see later the one of the major difference between experts
regardless of what the field is according to cognitive psychologists and
people who are not experts is that the experts have somewhere between 10,000
and 50,000 what you might call cliches
there are things that are independent of the actual building blocks and there are
little things like arches and other kinds of structures that are somewhat
abstract like an example that's been identified of the many that have been
identified in programming is that is
very simple one of the ten thousand is the cliche called summing the elements
of an array right that's an idea that we actually have and each programming
language has a different way of doing it but when we're faced with some sort of
problem we're trying to solve start mapping I claim and this is borne
out by experiment that we start mapping that problem into the sum of the 10,000
things that we have absorbed and that gives us a way of doing planning one of
the major distinctions between expert planning and novice planning is that
knossos plan when they do plan with the bricks they try and make plans in terms
of the bricks and experts almost never do okay and you can imagine the
difference in outreach by being able to plan with stuff that you already have
inside of you and having to plan with something that is number one to
primitive and number two is something you haven't learned yet it's still in some manual somewhere and so you're in
this spidery fragile place that characterizes the the novice now one way
of interpreting this is this is an elitist way of looking at humanity and
in fact there was once a theory that
only certain people were ever to be found in the 5% that's more of an
elitist theory this notion of the aristocracy and that this being in this
five percent was always genetic and and so forth but in fact by letting it hit
different people in different populations it actually becomes a different kind of theory I call it a
Jeffersonian theory because Jefferson's notion of democracy was as he said if
the people do not yet have the discretion to make the decisions that
they need then what we should do is better inform their discretion rather
than withholding the franchise okay and so what Everson said along with lots of
other people like Suzuki who thinks that you don't have to have being here in
order to learn how to play the violin and has proved it with millions of counter examples that the of much more
than a majority of the people for any given thing actually have enough stuff
set up so that they can build the layer that is required to build a next layer
we'll get them up to a very high level so this is an improvable theory of life
rather than an elitist theory it is
impossible to deny the existence of this no matter how Democratic you want to be
tough beans this is this is here and you
can pick them out in any crowd and the way they do things is different and they
do things differently from the word go even when they have not seen the subject
matter before and the reason in fact there's some very good
beca's Jim spore here I just like to
recommend his book that he wrote with Eliot solloway which is a collection of
papers on novice programming it has
probably 90% of the really good stuff
that's ever been published by cognitive psychologists in studying this whole
area and as well as we get into some of this some of this stuff will see that
some of the things that work really well with the 85% actually hurt these people
because these people actually come to the scene with some already some schemas
that don't specifically have to do with the area but somehow are much more
adaptable to the area than these people there's a way of finding these people
ahead of time there are certain kinds of tests you can give to find them ahead of time and some tests have been done with
them the other thing I should mention
about this talk when I first agreed to do it which is a long time ago I've
canceled out several times I was originally going to do it talking about
playground but since then I wound up being a being a manager of a couple of
projects manager of the vivarium now and I started up a couple of new projects
and I've been very busy and doing a
presentation on playground got less and less interesting and I still I found out
I was still as interested in end-user programming as I ever was so I decided I
would do it on this and that this is the last year that we're actually going to
make any changes to playground so it's essentially being we're not
going to kill it so much the teachers are still going to use it in the classroom but we're going to try and do
something better and different so I thought it would be good at the end of
the spring or so to have a joint presentation on playground because a lot
of what makes playground work is actually the work of Scott Wallace and
Marian and Dave Mintz so actually four of us that did it I thought it'd be nice
to have a session just on yet and I
didn't want to go through a history of all the things that have been done in
the past but boy let's see maybe I'll
just do it like this and let you scan it I by my count there been somewhere
between 30 and 40 programming systems
specifically aimed at end users in various ways this is by no means an
enumeration of them and this is by no means all the different types they are I
just picked what is it ten different types that characterize some of these
and some of them are in more than one type of course 62 was the year that two
of the best ones that were ever done was done this is why it's so poignant
because that's 29 years ago now jaws
which is probably I'm going to show you
last year right before he died I got the
jaws movie from cliff Shaw is the guy
who did Joss single-handedly and we was so faded and stuff we went and got it
color corrected and stuff anybody wants a copy of it can have it but this is
this movie was made in 1964 okay the I'm
only going to show you a part of it because I think you'll find it interesting I want to contrast the two two ways of
doing things that people started working on back then and the reason they were
working on it is because the Advanced Research Projects Agency in 1960 said
you know the destiny of the computer is to become a symbiote a complementary partner for humans they
didn't know what that meant McCarthy thought it meant that you should have an intelligent agent that was going to that
he called the advice taker other people thought it would be something more like
a tool so this notion of tool and agent and of course the tools are easier to do
than the agents so the tools started appearing first let me let me show you a tool it's called jaws history of this it
was done on a computer that I think that was built in 1952 maybe earlier it was
one of the Princeton type computers this was one was called johniac because it
was John von Neumann was one of the designers of it and I will not describe
that machine to you except to say it was much larger than this room and it was
astoundingly slow had almost no order
set and they were gonna throw it away
in 1959 1960 and cliff Shaw said well if
you're gonna throw it away let me have it I'll do something on it and this is what
he did a system called jaws for johniac open-shop system this is one of the very
first interactive systems ever done and
when you see it you'll be amazed at what they what they decided to do instead of
using teletypes they decided to adapt IBM electric typewriters so in fact you
type two jaws in green it would type back to you in black undrilled fan-fold
paper so it would go into your notebook in upper and lower case okay and the
user interface on this system and the systems that followed it were done about
as well as it can be done jaws invented remember basic came along
a little bit later and basic was a simulated Fortran when it first came
about in basic you didn't interact with it you submit you interacted with the
editor and you're what you were doing was the editor was a simulated key punch
and you fed simulated cards as data to
your basic program so this is like kiddy Fortran at Dartmouth and jaws earlier
invented this idea that oh you should be able to have direct and indirect interaction so a direct thing is just
saying three plus four and Joss would execute it but if you put a line number in front of it then Joss
would defer execution of that line number something we associate with basic
and APL but Joss invented it just invented it better as people have often
said Joss was an improvement on its successors why did invent it better
because Joss the Joss people were smart enough to realize that the line numbers
should be floating-point numbers so you could always put things in between
something that nobody in basic or APL ever thought of ever okay so this is
just the end of it I'm skipping the introduction because I think everybody will understand what's going on right
from the word go I haven't tested this out yet so I'm presuming it's all set up
and working is that a good supposition
turn off the talent in preparing for
when it's worked for the unforce brand officers frequently have the problem of
evaluating an expression for a number of values to aid in the preparation of a
graph here is one such expression let's
do it Josh you'll start on a page with a
step one point three little valley with our warm it up well for values of T any
one seventy two forty five and nine
and 4l peak to the point line here we
can backspace strike over and go on for
L equal to point one point two in steps of point two up to - Part 3 if anyways
our expression and type out the answers
this is WYSIWYG as far as the required
to convert degrees to radians and to
convert logs to base e to base 10 then
we can ask jaws to the result
again we'll keep a record of our program before we delete it
jobs could operate with indexed variables and the stored program may
call for values of variables to be entered during execution will vary the
value of the first index X from 1 in
steps of 1 to Y
and very the index lie from one steps of
1 to 8 we enter the value of each
variable evidence requested by jobs
when all of these values have been entered we may proceed to have jaws
calculated in mr. Abel as will be required for problems more complex than
we have been able to demonstrate here
you have just seen a demonstration of many features of the Java system has
pointed out this is an experimental system designed to provide individual
scientists and engineers with a personal on-demand computing service as a side
aspect of the experiment we hope to gain insight into the interface problem
between a man and a computer the system shown here is currently available to
rands professional staff our experience in
using just our observations of user behavior will be the basis on which to
continue research later model systems will certainly differ from what you have
seen John is one of many current efforts in online time shared use of computers
the goal of the Java project has been to demonstrate that the ability to be
online mr. computer given a reasonable language and almost continuous
interaction leads to a powerful computational tool it is probably too
early to forecast the ultimate effect of such systems but for a certain class of
problems at least the programmer as the middleman
problem and the machine is no longer needed jos represents to be believed a
significant step forward because of an intimate interaction between man and
machine this sista i just want to say a
personal note that this is one of the few systems i've ever used in my life in
which the knowledge that you're going to get to use it in the afternoon set up a
pleasant little tingling in you that of
anticipation that i mean i can't begin to describe how beautifully everything
was finished off and cliff Shaw's paper
which some of you may be interested it was written and I think the 63 or 64
joint computer conference thing said the important thing in these systems is just
in just the details the hundreds and hundreds of little details that you have
to do and when and this was a system that users came back to and came back to
they just loved it so much so that was
Josh and that was one way of doing it might wonder why it didn't Joss make it
and basic didn't well it was one of those awful stories that GE decided to
do a network later on in the 60s and
looking around for something to run on that network they went to every place in
the country that had a GE computer and looked to see what was running on it and
guess what place had a GE computer Dartmouth Joss was not implemented on a
GE computer and so GE took what was running on the Dartmouth time-sharing
system and made that the basis of its network called Datanet 50 and that is
why and the only reason why basic came around and then of course Bill Gates
whose taste whatever whatever taste he
has must be mostly in his mouth
decided to resurrect the language that
had been safely dead for a few years and that will never get rid of it okay so
let me show you another system that was done in exactly the same time for
contrast this is sketchpad
so this was done by the way also on a computer actually a computer almost the
size of this floor has Ivan said once it was one of the last truly large
computers in the United States it was it was certainly the last computer to have
its own roof and also actually one of
the great architectural designs call the
tx2 to hear sketchpad this is the first
known sketchpad movie around nineteen
summer 1962 so he's pointing to those things and now
he's going to say make all of those angles right angles and sketchpad just
figured out how to do that so sketch pad this is the first system
that ever had a window and in fact the virtual on this very first graphic
system the virtual sheet of paper he's writing on is 1/3 of a mile on a side
windowed he says make these guys
parallel and now he's going to go in and
- the lines
so this is the system this is the first or at least I guess one of the first two
object-oriented software systems by the
way there no there's no line drawing on this display the tx2 is putting up a
point it actually has a word of memory for each point on the screen okay but
continuous zoom try doing that on a Mac think about what you're seeing here
remember this is the number one so he
wants to make a rivet again the reason it's called sketchpad is because the
idea is you should show sort of what you want and give the the rules and
sketchpad should complete it so use the center of the those cross guys to be the
center of the circle now he's going to go again and say make those guys I just
pointed to mutually at right angles and sketchpad in solving that also forces
the rivet to be symmetric and in fact he
could have made the ratios of the sides obey some rule as well once asked Ivan
how could you possibly in one year done
the first computer graphics system the first object-oriented software system and the first constraint based problem
solving system and he said well I didn't know it was hard so the system is quite
remarkable in that on any system even up
to a $200,000 workstation you cannot buy a system that has this kind of
interaction and problem-solving ability this is after 30 years he's continuously
changing the size of the rivet to size it in there and now he's going to anchor
it in there and by the way he that
drawing of a rivet was what we call a class nowadays that Ivan called a master
so he could make lots of different rivets here's another instance here's
another one this is why they decided to do better
displays but now look what happened he's
gone back to the master of the instance and he's going to make the cross pieces
invisible and in the drawing all of the
instances have felt that change and you can't do that in Mack draw for Christ's
sakes and in fact this drawing that he's
doing here is a master itself he's going to zoom in on it
it's a master so he can make instances of it
and again this composite structure will feel any changes made to its master and
so on ad infinitum fact even more
sobering is that in that first film I
haven't been able to run down a film and Ivan doesn't seem to have won either that showed how you dealt with how you
actually made up the constraints and attach them so I have here an excerpt
from the one of the sketchpad papers and
in fact the fact may be let me do this
one first so these little guys this is the this is
the object that he's drawn and truly
amazingly in sketchpad Ivan decided to make the constraints graphical objects
as well they had a class called constraint and each instance of them was
shown as an icon okay so this is also the first iconic programming system I'll
tell you to me and what an icon is is a symbol in which something about the
visible form of the symbol tells you in an analogical fashion about what it's
supposed to do or you could say in a metaphorical fashion and so the
constraints and sketchpad are like little spiders each arm of them reaches
out to a parameter right so the the
equal guy here has sort of two double
arms because equal applies to in this case applies to lines so this equal
constraint is saying I want this guy to
be equal in size to this guy okay and
that's what he does is he yeah this is a master definition he copies the
definition he connects the definition up
to the picture they merged together and as they merge together if contain
constraints are satisfied and that forces the P guy is a
parallel guys that forces these two guys to be parallel this guy forces them to be equal which
forces the rest of the structure turn out right so so sketchpad and you can
make up new ones of these you want you
just didn't have a fixed set of constraints you could take the
constraints that were there and build new ones and those would be a class of
new constraints that you could then go out and apply it to pictures pretty
nifty huh so this is why old farts II get really pissed off after all this
time that we haven't actually qualitatively been able to go beyond
this in fact in some cases we haven't even been able to do as good this is a
long time and I'm including myself in the thing was I've been working for years trying to do something that will
actually get over the threshold for the end user all right so the other the
other thing that is an important point in this talk is that neither just nor
sketchpad got above the threshold for the end user no matter how wonderful
they seemed to us why that's why because
the users are not like us and in fact if you ever wondered about it think of how
many people are who program what percentage of programmers do you think
have ever designed a programming language right maybe one in 10,000
probably less than that how many programmers have ever designed a new user interface idea right one in
100,000 so in fact even when we're design one der why is MPW so bad okay
the reason is is that the people who design it even though they were designing for professional programmers
they were a different kind of person than the programmers that they were
designing it for so no wonder they couldn't design it for these other people because they thought the other
people were like them this comes back and back I mean the Mac right now has an
absurd set of barnacles on it right it
is no longer use they're friendly like it used to be you think it is no way try
it out on almost anybody who hasn't seen it before and let them try and
find out the chooser for themselves let them try and figure out what it means
that when you close the chooser if there's a perceptible lag between the
time that it closes the actual window and before that it blinks out the thing
that you've just selected but what does the end user do they go back and
reselect the chooser to see if it really did select the printer you know this is
in the company that is supposed to be making its money on user interface and
we actually are willing to sell that and we're willing to sell it regardless of
complaints to the contrary to saying why can't you just blink them out at the
same time so what's the purpose of this
talk purpose of this talk I can't give you a solution for this but I don't want
to give a presentation either what I want to do is to have something that ranges between a dialogue and an
argument about this stuff the only rule
on arguments as you have to back you can't just complain you have to back up
your complaint but as far as otherwise
in my opinion everything else goes let me show you another system from 1963
Ivan's brother Burt who in fact is known
as brother Burt did this system which is
called sometimes called OGG shop for
online graphical specification procedures and Burt's idea Burt had done
some hardware design he thought well here's another way of dealing with the end-user let's let the end-user wire up where the
values are going to go okay and this set up a whole class of data flow type
languages of which one of the best ones that's ever been done was done here at
Apple a few years ago called fabric okay and so the idea is you have function
boxes the information flows so the what
this thing is showing you with the connectivity is where values are going to go so it has the advantage of being
variable free and in fact these systems are generally fairly easy to program
fairly difficult to deal with once they are
one tends to forget what even oneself did a few weeks later and looking at
somebody else's can often be a nightmare there's a reason for that which we can
talk about later when I start talking about the site some of the psychological aspects okay let me get my where's that
slide I just had oh they'll thank you
that's the one I was looking for okay so
English like things Joss and HyperCard
actually are rather close basic had some
English like aspects to it but Joss actually went so far as to require you
to capital they wanted you to think in terms of sentence so you actually capitalized the first words and Joss and
you put a period at the end and it tried
to make the stuff very readable APL is sort of math like next system I want to
show you is sort of a control throw flow way of doing it which the first great
system to do that was Grail and you'll
show you two excerpts first just to give
you an idea what Grail was story behind this is the the main claim about Joss at
Rand was that a lot of the end users who wanted to use the thing didn't know how
to type and the pressure from this caused Tom Ellis and a couple of other
people to invent the first really great tablet which was emitted in 1964 the
same year that the mouse was invented by Engelbart and Bill English and this
tablet was an incredible thing even by today's standards except it's price was
quite unusual this could give you about a hundred points a
second at a resolution of more than a hundred to the inch and it was about
like this and cost about eighteen thousand dollars to buy one round
1967-1968 okay and here's nineteen sixty
five the first really great hand character recognizer you might compare
this if you've seen the go systems version of this stuff take a look at
this system sorry
this list of processes takes us back to the topple stone where we may start to
edit the flow diagram so there's no keyboard so CZ wants a box and it makes
one now it's recognizing as printing this is
where modern-day window control came from literally a decision elements to
the box and came from it to scale
we then erased the florals attached to the process and new areas and move the
box to a new position this allows us to
draw a new box then chop off his corner
and label it sub scan [Applause]
with the residual error now notice it's modeless misses the an he sees it he
hesitates but he says I'll just complete it because I don't have to go into any
mode okay so that was grail now that was
about 1968 and one of the one of the
great experiences I ever had in my life was to use that system for about a half
an hour's about all that would stay up between crashes okay now let's take a
look at now Grail is actually an end user language it was actually a simulation language and here's an
example it is the process that we call
the pseudo random integers because the process has been predefined in this file
when we press on the translation display appears to be filled in in this case the
translation is quite simple and requires just two crackers to return to the
diagram we press return and drawing too
soon element on a random wavelet drawing
little connector and nullify it to represent a switch control planes can
land to the switch label a switch with a name and a variable subscript to provide
a terminal for each value of the subs we draw a trail or connectors and label
each with the same name as the control switch and subscript each with a numeric
value from 0 to 7
to simplify the problem we draw another remote connector and label it then
gather all of the control paths into
this is tedious as the fighter note that
this connector has no control point
to close the loop we draw another remote connector give it the same label as the
collection point and draw an arrow from it to rent before we can simulate the
process we must assign space and values
to data variables when we printed the switch subscript or entered a label on
the interface display our used data labels on the coaming form each was
stored away to be presented on this display that's the seed for the random
number generator thought he did yeah
exactly this is this is yeah this is what they
actually wrote the operating system for this machine in this system notice it
has as a speedometer up there it takes
you through everything
we will stop the simulation a nuisance
okay so that was grail well it's this
machine I believe was about all of these
all of these systems were programmed on machines were about like 512 K max and
it takes two for sketchpad was about 512 K and it was about to say his speed as a
512 K Mac and this machine was a was a
model 40 with a they built all their own displays and stuff herself was sort of a
kludge duck display system all single user of course so it's about about that
I mean that's the main thing is they could actually program back then so it
was it was different they didn't have to wallow in bytes in order to get things
done that hand character recognizer has
been available in a paper since around 1965 and anybody who does the strange
thing called reading papers could actually go back and look at it and
implement it what's interesting is that the things like the go system are
actually not even as good as the Laveen recognizer which is in the back of
Sproul and Newman's book which is about it like a five page program in basic or
C or something like that so this is a typical example of Silicon Valley trying
to roll their own and coming up with that new kind of wheel that has about 15
corners on it and this is really a serious problem I'm I am get very
exercised when I see people doing stuff worse than was done 30 years ago
especially when there's documentation that anybody could read so you can least
start from where some of these characters left off you know you think we're doing better
now than we did back then no we aren't we aren't doing better now they one of
the reasons they were able to do so well is you couldn't make money at this back then
the people who did this did it because they loved it and they they believed in
this dream that the computer could actually be something wonderful for people they cost millions of dollars to
do these experiments and they had to get people who are willing to put millions not $3,000 for makka FX or 10,000 for a
mac FX but millions of dollars to do one of these systems in a form that could
never be commercialized that was what it was like back then there's my old fart
part of the lecture ok another system
I'd like you to look at is I think it's
this now in fact we were very so this is
the one of the original movies of the old Dynabook model and
we were very interested in seeing what
end-users could do let me show you what
one of our child and users could do in
an object-oriented language object orientation as I say it existed in
sketchpad existed in Simula never been
used in a direct form for end-users until some of the Flex machine stuff and
then most especially the small talk stuff and see what not quite sure where
I am on this tape okay so here's so this
is something like Mac draw it's a twelve
year old girl
the system is tight general and allow five sizes and colors to change that
will many instances can be created from
the shape description she is betting to build a truck the idea
of a system to a drawing is something every child understands intuitively because they already know about drawing
the school in order to design and build
the system however Susan had to gain a fairly deep symbolic understanding of
some of the semantics of drawing even more until she has time to grasp the
very powerful notions which have something to do with inventing comprehensive models that not only
capture her desires and ideas but which also rock
okay so that now I won't show this one
just in the interest of time so we had some successes at that and I'd
characterize part of this success we had is because there was a fair amount of
what you might call pre modeling with the kids I'll give you an example of
this is stuff that was worked out by
Adelle and some of the rest of us trying
to figure out how do you get kids to do
something besides just make pretty patterns on the screen the way they do in logo because one of the one of the
biggest problems is the limited success
or success in a limited area is probably one of the biggest barriers to getting
major success you know it's the local mini minimum problem and one of things
that was discovered although much after the fact was that the kids who did learn
logo before logo had a turtle did much more interesting programs they were
doing list processing of things like turning English sentences into pig latin
sentences or it into french sentences where they actually had to use recursions and parameters and stuff
whereas with the logo turtle you can actually do fairly elaborate effects on the screen just by long strings of four
words and less so there's a real tendency for the kids to sit there
rather than taking on the bigger structures in fact we discovered that because the first way we taught small
talk to kids was in the form of turtle
geometry because we didn't know what else to do so adele started thinking
about how could you teach objects to the
kids so she gave the kids a program called box and they typed something like
Joe gets box new and a box would appear
on the screen and the they could then say Joe grow and Joe turn 15 and the
boxes would obey these messages that were sent to it
and she you could get another box called Jill so you had two instances of them
you can make Jill go one way and Jo go the other way and then she would get the
kids to try and guess the interior of box what what were these box and they
had they'd exit they had actually exercised the thing enough to know that
that there are these I apologize for the
size of this that there are these commands that there was a a turn command
a move command a grow can may actually
there wasn't a move command in it there is a draw undraw redraw turn and grow
and so forth and they write down sort of
an English description of what they thought was actually going on and then
after they done that we would show them much to their horror what was actually
there and it was in terms of the turtle
each one of these in this particular way of doing it each of these instances
owned its own turtle and so when you said turn it would say something like
actually this is this is a fancier version that Dan did it would say
something like selfie race changed my
internal angle to the new angle and then self draw so that it was fairly theirs
so there's three little sentences for each one of these things and then they
would the next thing they would do is to
make a plan to add a move here's one
version of move
sort of the way we did of getting the kids to write the English before they
worked on the small talk so they put an English description of their intention
and then they would do they would say
self on draw placed the turtle at some new place and then say self draw so
that's an analogy to the things that were already there and that was one of
the things that led us to be interested in sub classing because we thought that
the getting something that had superclass's would actually help the
fledgling programmer by providing metaphors that would help them in their
planning turned out not to be the case in fact super classes are very hard even
for professional programmers to deal with anybody know why anybody have a
sense anybody ever tried doing something in sub classing something in small talk
somebody must have an opinion yeah what
what is the superclass mean right you can't even be sure that the word print
means what it's supposed to mean because small talk doesn't enforce any external
meaning of it so we actually have to go read the superclass code to try and
figure out what it does and it's not in a particularly readable form so the next
thing the kids kids would do is in this move plan they would one of the things
they might do is to leave out the undraw so now the box would leave a trail
another thing they could do is to hook up the parameters of where the move to
is to the mouse and they could drag the box around leaving a trail now and they
would have a little painting program and a little painting power Graham was the
basis for this system that was twelve twelve year old girl did okay that
system by the way that the twelve year old did would be quite a challenge in HyperCard because hypercar isn't really
an object-oriented language and you are without having something like
independent objects that you can deal with after you've made them it is impossible to go back and recent you
know think of what you have to do hypercard to simulate object-oriented graphics right you actually have to have
another card where you're making the drawings on and then you're swapping
images and yep you're forcing the end user to actually do double buffered
graphics which is a little silly okay so
that was a small talk we talked about
data flow pattern matching just like snowball and but G was a graphical
language to do that they've been rule-based languages like Rita which is
called another one done it ran call which is called a Rand intelligent terminal agent
which is basically a pattern matching
system for allowing the end user when the end user came up to another database
that the end user wanted to deal with the end user supposedly was able to
write some rules in it that described the new database and Rita would merge
this database into the user interface that the end user used for all databases
turned out not to work so well but they learned a lot about rule based program
so what's happened along the way of doing this stuff is that almost every
one of these systems has led to an advanced in the world of the programmer
but the end users still can't really do
what they need to do that's the paradox that's why it's so frustrating every
time we do something here it spills out really nicely into professional
programmer world but we it's somehow we can't quite get past the barrier that
the users aren't like us actually we have Alan warning here Alan want you
raise your hand Alan did the best follow-on to sketchpad
which is called thing lab and actually we have Dan Ingalls here who is the
architect Dan which raise your hand who is the major architect of small talk
over the many years so I bited them along because I figured if nobody else
here would argue with me they probably would by demonstration programming by
demonstration one of the first really good examples of that was Pygmalion have
Dave Smith here see this is raise your hand
so what's frustrating about this we have all these great people working for Apple
and we still can't solve this goddamn problem so Pygmalion is maybe a better
[Applause] Pygmalion I still think is one of the
best ideas this is one of these systems that deserves to be done again because
basic notion of this one is if you could capture what one programmer would
explain to another when trying to explain an algorithm at the blackboard
the programmer goes up there and draws some pictures of data structures and say well first you do the basically showing
editing level at it of how you go from the raw ingredients to how you get your
results and you capture that you would capture a lot of the useful parts of an
algorithm without having to know a lot of the grungy terms and it in turn was
based on some of the ideas of WYSIWYG
editing that as they've put in his thesis people rarely make a an egregious
error in a WYSIWYG text editor and the
reason is because they're making the change right where they're looking and they can see whether the change was the
one that they wanted or not so they're right there there's not this huge delay
between seeing the change Radia Perlman had taught turtle
programming to very young children by using a button box in which the turtle
always acted out what it was going to do even when it was was when it was
remembering and what's nice about in
there are two ways you can go on a programming by demonstration system one
way to go is to try and have some AI to try and figure out what the intent of
the demonstration is we even have some
systems that are being worked on on here Allen cipher and some other people are working on them I think this is a very
hard problem and the reason is that I believe that in order to figure out the
intent in any reasonable domain for programming that you have to have
something like psych and you have to have a model of the 10,000 or 15,000
people's the things that people generally want to do you have to have some way of figuring
out what the goal is and if you don't
have a way of understanding of homing in quickly on the goal the possibilities
for misunderstanding what the intent is is tremendous just as this happens when you're dealing
with another person who thinks in a different way I think the other way to
do it was something that was done by dave student dan hilbert in a system
called small star which is sort of the i think of as the granddaddy of direct
manipulation programming by demonstration systems in which what he
did is he tried to collect a transcript you know we would call it a macro today
but to collect the macro in such a way that the form of the macro was
meaningful in higher-level terms rather than low-level terms the way most macros
are today and then you could go to that thing and be able to edit it into the
level of generality that you're really trying to understand and I happen to
believe that that is the best way in the next five years to solve this problem I
do not believe that AI is going to get enough there and a little bit of AI is
almost worse than none at all because it can actually get the user into a place
where he's trying to outguess some system that can't guess what he's trying to do okay so let me talk about a few
psychological ideas and some studies that have been done that are sort of a
basis for us the first one is the one that gave rise to the Macintosh and next
month we're actually going to give Jerome Bruner a Mac for coming up with
what I think of as the main psychological basis for the design of
the Mac and it's a multiple mentality way of looking at things
he called them in active mentalities iconic and solid mentalities the slogan
I made up was doing with images make symbols and weight and way you think of
them in a more visual form is
as in childhood development as three
separate mental centers that all the deal with the world in a different way that mature at different rates and think
about things in different ways we've had our greatest success in dealing with end
users in retreating from the symbolic way of doing things down here and the
real question about the Macintosh is have we actually been helping the
problem know how we've been winning the battle and losing the war because the
central thing that you must be able to do in programming is go from the
concrete to the abstract and we've been seeing in a lot of our work at the
school that the Mac actually seems to be interfering with the kids ability to do
abstract thinking not helping we'll talk about that a little bit here's some
psychological studies there's quite a bit of this stuff has been done and the
first caveat is sort of epitomized by lead guards work is a classic study that
showed that end users preferred English as a command language for text editing
rather than command keys he did that at
the exact same time that people were
doing WYSIWYG editors at Parc okay so this is the this is the optimizing the
Train theory of transportation rather than venting the airplane so he took a
bad area and found out what the best thing to do in the bad area was another
important notion is the distinction between what Brownell and Moser in 1949
called mechanical learning which is being shown of parallelogram and being
told that the area is the height time the base versus what we used to call it
Park behold things the behold thing is a
meaningful learning where there's something in what's being presented that
illustrates why it works and the simplest be hold on this is to show that
you can take a little piece of triangle from here and move it down here and it becomes a rectangle and therefore it has
to be height times base so it's a
difference between okay quickly now this notion of advanced
organizer is a good idea the advanced
organizer is like if you're going to read something in encyclopedia britannica read read the article in the
world book first this is a good one for kids that gives you a map and you can
take care of the much more complicated information much better the Mac should
be an advanced organizer for end user programming everybody agree with that
because it's got all of these metaphors there and you're doing the easy thing a
reading from it in a sense and it should be organizing the knowledge that you need to put together for end users
Gagne showed that putting things in your own words slows
but it advances transfer so if you want
people to take something that they've learned and apply it in a new situation it helps to have them articulate even
though it delays the learning process itself labels these are like simple
things right but it's incredibly important a label on a paragraph will
help the comprehension of the paragraph by about a factor of three most people
can't figure out what a paragraph is about unless they've been told here's
one that Steve wire and Alex Canara did a long time ago which is to give the end
users a concrete machine model where Steve Steve's around here somewhere okay
well he lost his chance at fame
the stuff that Adele and I and some other people did use pre-training
prototypes giving the kid a plateau to
stay on for a long time planning templates Atwood and Ramsey did the
first really comprehensive study that showed how many schemas that experts
have in programming and show that they are very very similar to the schemers
that musicians and chess players and athletes and so forth have one of the
great papers I don't remember the date was done by Perkins and a group at
Harvard character yeah they were they
thought it was in an in excess of 10,000 for programming it didn't seem to be up
in the 50,000 of the chess master but it was in excess of 10,000 they thought no
no the the presence of yeah the numbers of them the number of chunking entities
there are also personal styles that interfere some people are what called
are what I call Stoppers and other people are called movers and the stopper
is a person that when they get into a difficulty they stop okay and the movers
keep moving sort of difference between depression and anxiety right it's it's
always it's always better to be anxious because
you're moving at least and the problem
is the extreme cases actually are almost as we're as bad off the movers many
times we'll just take her randomly in order to be moving but they won't sit
down and do any more thinking than the stoppers do so one of the one of the key
things that you have to do and this is a serious problem is that you have to have
something like the Mac puts a lot of effort into extending the short-term
memory of the user onto the screen in order to prevent stoppers from getting
stopped right there's always a pulldown you can this is why the pull downs work
better than pop-ups because it's hard for a stopper to remember that the
pop-up is there it's invisible they have to actually do something whereas just
scanning around and so that at least there's a line of menu they can go and
fiddle with it to get going
close tracking of code I'm actually leading up to something here which is a
problem with this area is that see the reason nobody solved it in 30 years it's
actually complex I apologize for that it's actually a hard problem as I said
in the beginning close tracking of code close tracking of code means that the
user pays attention to the very code that they've actually put in the machine
most users do not we've seen this everyday at the school is that the kids
will put code in and never read it again even though it's in front of their face
they will not look at what they do tinkering we've just talked about is
going in and making a change somewhere because that sometimes that has worked
once right go in someplace and suspicious make a change and they will
do it forever most users won't break problems into subproblems because that
isn't solving the problem now the reason
I want to reason I'm emphasizing this stuff is what is astounding to me about
this stuff is that does not matter how old the person is for this to be true
these studies have been done from kids starting with age four and five they've
been done with ell entry school middle school high school college
lots of Yale students suffered through this it seems to be almost universal
that these are the problems that you have to work with here's another one
that solloway and spore and some other people did novices will write this is
almost a no-brainer but it's an interesting one novice will write better programs if the
primitives of the language fit their preferred strategy and it's hard to
believe for instance an example that
since it makes a difference between saying this
and saying this
doesn't seem that difference to us but makes a huge difference if a difference
between the normal if statement the way we usually see it if a less than B then
a gets a plus B versus saying the action cloth first a gets a plus B if a is less
than B this one is the one that the end users like the end users like saying a
plus B goes to a rather than a gets a
plus B ok because the end users are
basically bottom up they're generating and putting and if you think about the
the other versions of those two things they're both top-down they're putting
the guards first they're delaying
talking about what the action is going to be whereas the end users are in their
best place when they're thinking about what the action is and finally this is
sort of the classic paper by spohrer and solloway yes sorry has a couple of I
think the central important things one
is that a few types of bugs account for most of the errors and here's the capper
most bugs are not misunderstandings of
the language but our composition bugs we
had we taught many third graders this
language we worked on called playground and one of the astounding things about
this experience these are seven and eight-year-olds is to have a class of
sixty children after about a week and a half be able to answer most questions about
how do you do something if correctly if the answer was a single playground limit
of primitive so in a week and a half they'd absorb about 50 or 60 of the damn
things really astoundingly and I think one way we could say we're Scott because
it's see if I could get a nod from him on this that one of the most amazing
things is the Running Start the kids get in playground like the first two
weeks you get 95% of what you're going to get and then actually it retrogrades
but being able to have almost 100%
comprehension on answers that require
single primitives the kids are almost unable to answer any question that
requires any kind of combination of more than one primitive any kind of question
whether it's even a simple secret you do this first and then this or you do this
here and this here any kind of thing that we require is planned composition
that's outside of the bricks of the thing they have no schemas for if you
want to look at it in terms of schemas there are only plans they can do are in
terms of the bricks and the only planning they can do with the bricks are single applications of these bricks what
do you think okay listen if I knew I would be writing the paper right now
yeah the question is when you start
getting into what what you might call con this is where we can start getting
huge content interference like the users can't problem-solve is basically what is
being said here in any form and the difference and this is why the Mac is an
illusion and in a bit because the way we get the users to problem-solve on the
Mac is we give them an environment that they can problem solve in and the
problem with programming I claim the difficulty with programming is the users
haven't ever done that kind of problem solving at all and there's problem
solving that involves something like variables and that there isn't anything
in there Norton ordinary experience where they think of things that terms
and that the Mac actually doesn't get you it only helps in HyperCard to the
extent where you're doing things that don't involve problem solving that involves variables as soon as you go try
and go from the concrete to the abstract and that my claim is it doesn't matter what kind of end-user scheme you're
trying whether it's data flow or any other kind of thing the biggest problem that you have is that is that the end
user doesn't have the schema for doing the abs drak problem-solving forget about how
are you going to realize it here's some
of the problems one of my favorite
psychologist is a guy by the name of Vygotsky who turned out a lot more than
Piaget did in just 10 years he died of pneumonia in the 30s and forgot ski one
of vygotsky's many things did was to study concept formation in children and
it goes through a number of stages first stage is there's a complete separation
between the thing and the symbol the
second stage is there is an ephemeral connection between the thing in the
symbol some some days there's a connection and some days there isn't a connection third thing is the phase that
most people get to and stay at which is there is an indelible Association of the
name with the thing kids think that the that is you know in the sky that there's
a mystical thing called do G that is this thing and in fact the real symbolic
act is not this one but starting to
admit other ways of thinking about dog and the one that we do and scientists do
is the one where we take the symbols away from the thing again and keep them
safely over here to use them just when we use them this is the does everybody
understand what I'm saying this is the hard this is the place that ordinary
experience doesn't get people to well
dogs yen and I think I just made up some
brats some arbitrary thing standing for
God's could mean X but what I'm saying
is is that the it's this sort of freezing on the ordinary language gets
you in pretty good shape by freezing on the association between the thing and
the symbol and in fact the deadly embrace is so tight that is how
for people to relax yes thank you no you
know why they don't give it up you got a theory exactly it's like Necker cube do
you speak more than one language yeah you I know whether you've had this
experience but most people who speak more than one language fluently have the sense of that they're actually thinking
in terms of it and it's one or the other it's like a Necker cube you're in one
order you're in the other and it's it's more than just the words it's actually patterns of thought my wife actually
speaks French very fluently and when she's been in France for a couple of weeks she has some difficulty in getting
the concepts back into English yes yeah
well see the the cop-out which I'm going
to be a cop out on the thing but I think that part of it is the 5% thing part of
it and I think the end part of us are in the 85% who for one reason or another
gradually loosened our hold on the way
our language uses symbols and got us into this this foggy your way
now when way of looking at problem-solving is a lot of it is not
committing to the first idea you have for the solution right and that means
that you see a separation between yourself and your ideas the piaget
problems of the kid with the tall glass of water are that the kid is frozen and
immobilized by the vividness of the visual scene and so where the Middle
Ages but it's it's it's the stepping
back the detachment from the vividness of the senses that starts giving you the
problem-solving stuff
language doesn't solve anything they want to solve yes for instance a lot
more people than 5% use spreadsheets and know how to at least do some simple
spreadsheet calculations and some at other things like that can solve things
that those people financial Iowa's yes problem so these kids they get all the
primitives and there's no problem that they really want to solve with it yeah
yeah well part of the part of the wait when you're doing stuff with children
you actually want to have the problems be something they do want to do and we actually put some effort into making
that the case and can even find out from them that whether they're bored or not
most interesting thing about the playground stop because it was much what
we're doing is more comprehensive than when we're doing small talk is that the
kids love of playground even though they're not learning much after about
the first week and a half they are totally enthusiastic about it
for the whole six weeks or even couple of months and they love it they go to it every day there's they don't complain
you know they only complain when it crashes and it doesn't crash that much this year so they're happy as clams they
love it it's it's satisfying their needs there's a lot of things that they can do
with it but they stay like I say in this level where there are certain things
that it can do and there are other things that are just out of the potential well entirely so the boredom
is not actually the problem well yeah
yeah IRA goldstein at as Mark Miller
here no IRA Goldstein did quite a bit of
work at MIT before he came to park on
schemas that people used for solving adventure games and this is part of the
same general kind of stuff that was been in the 70s that John Seely Brown and
other people have done where you take some area like subtraction and actually
spohrer and solloway did again where you take some problem that you can give to
new people over and over again and you try and extract the schemas from it and you try and build a help system
basically that understands that the
person is making this kind of an error and tries to give them a way of seeing what the what the schema they should
apply is practically though it hasn't worked out because the schema is their
short-term memory is already blown out of the water right so the schema stuff
adds an enormous overload and it's it's
rather it's usually rather abstract so
here's another here's another way of thinking about abstractions so one
abstraction is this notion of a group of things
the next thing is do not worry about what the things are so we have eight
things there and the next thing is we might be able to line them up and
analogize them to length the next thing is we might think of it even as a sort
of trip along a length and then finally
we might wig it all the way down to eight as a as a symbol idea that's
divorced from it doesn't have this this symbol doesn't have any iconic significance okay and when you think
about people learning what eight plus
three is everybody can readily believe why you can learn that 8 plus 3 is 11
but what is difficult is for anybody who learns 8 plus 3 equals 11 to understand
what the significance of plus is because
it's easy to learn number sentences down here but in fact the richness of it is
up here and some of the best thinking that you can do like thinking in science
is done before numbers get down here thinking of science is done in terms of
trips in various spaces ok and so when
you add each one of these things you have a different kind of combination and
a different kind of result even although all of the vertical abstractions always
obtain like I believe that this is one
of the major problems that has to be surmounted because the the power comes
from going lower and yet the the ability to use the concepts comes from staying
high right this is the essential
dichotomy I believe in Indians of programming
query you know they're they're kind of saying the language for kids to do they're you know yeah that was one of
the sirens songs in the 60s it was called problem oriented languages where
you picked a problem space and in fact one of the big urges 12 towards what
were called extensible languages in the 60s was that you should be able to sit down you know if you're a programmer an
Mis Department you should be able to sit down with one of these extensible languages and make up a language and
when people finally succeeded in doing extensible languages that you could do
that in they discovered that there's several things when it was very hard to
get the languages rich enough so that they weren't just kits like you know
reports program generator RPG is one of the famous old early fourth generation
languages not really a language and the other thing is that they could not
exchange code with anybody like Smalltalk 72 was an extensible language
in every way including syntactically because partly because we thought that I
thought that that was still important that was a big idea in the in the 60s
and it turned out to actually be more trouble than it was worth and there's some tactical extension the ability to
create wholly new languages and it was actually taken out when we went to small
talk 76 not to say that it shouldn't be tried again because obviously we don't
know what the answer is but in fact it didn't seem to work the well and in fact
languages that are a lot like English have a big problem is that in people's
expectations about English seriously interfere because English actually is
not a good carrier of meaning right English is not sending a message to
somebody directly it's sending a gesture to a thought cloud that you hope you
share with the other person and the computers don't have much in their thought cloud
so okay so let me let me wind this up by
talking about what's what I think is going to happen in the future and what
and some things that are starting to happen at Apple but I really think this
the whole purpose of this talk is to try and challenge some of the people in the
room to work on this area I personally
think that for apples differentiation in the next five years now that Windows is
encroaching on our turf and so forth
that our biggest differentiation is to be able to deal with the generative side
of direct manipulation to be able to
allow the users to aspire as I say to the kinds of things that they use on the
Mac now here's that here's a Gartner
group slide that seems almost
incomprehensible but let me we put on my
age 50 glasses here and see if I can decipher it basically this this line
here is the worldwide revenues of all multi-user systems that's mainframes and
mini it was about 80 billion in 89 and 89 was
the year that this little curve which is our curve the desktop personal computers
crossed the mainframe curve okay and
from then until now and into the future
the worldwide revenues for desktop computing completely dominate all of the
mainframe stuff in fact the mainframe is
this curve here so it's it's just
slightly better than linear going off into the future for apples planning this
is the area under the curve between 1990 and 1995 is estimated be 650 billion
dollars that is a lot of area
and we should get fact the company
reorganization and the strategies are that we should be able to harvest a lot
of this because we are one of the major creators of this as a this is an area
that's why we have to be worried about what we call paradigm to computing the
computing that we do in the next way of harvesting that area is allowing the end
users to do a lot more than they can now by direct manipulation then the other
thing is that there is this other curve that starting does essentially has no F
doesn't start showing itself really until around 1995 which are what I've
been calling intimate computers you can think of them as the notebook computers
and the Gartner group estimates that the
area under this curve between 1995 in the year 2000 is going to be 525 billion
why is it going to grow so much faster because the intimate computer can reach
everybody right it it is dynamic paper
it's going to be hooked into wireless networking of various kinds and it's
going to be selling for under $1,000 it's not an extension of the laptop into
this world anymore then the desktop is like the
mainframe this is a new whole new thing and so we have this interesting thing
here that Apple could be immensely rich by 1995 and broke by 1997 right this is
one of these important places in this area here is the one what we call p3 and
my belief is that it's going to be p3 and user programming is done by giving
advice to some intelligent agent that figures out how to do it that's what the
end users really want but there's such a gap between when that's going to happen
it might not even happen this decade that I believe that we have to close the
circle to drop the other shoe of the Macintosh and get the end-users
empowered the same way we've empowered them for using applications they have to
be able to build them and change them to me it's one of the most critical
critical problems and so we started on a
little paradigm 2 project called Mac pet
the three things I think need to be put together one of the things ways of
thinking about HyperCard is that it's like the mac paint of end-user programming right Mac paint was not a
great desktop publishing system but people did do page layout on it because
it was the first thing that you could do page layout on then that draw I had a
better metaphor then page maker had much more of the functions and then finally
we have the second generation page layout stuff like this like ready-set-go
that shows this as a sort of a four stage evolution and I think HyperCard
got so much above the threshold of the end users and then stopped short that at
Apple we should do the invention of the equivalent of mac draw for it the more
object-oriented thing that maybe even extends into a little bit of what page
maker is all about so that we can then get the third-party developers to go out
and do a seriously engineered version of these things but the third-party
developers do not do this kind of design we have to do it
nobody else is going to do it
and I think this is just how many people
here have seen pink recently okay
lots of people okay the one of the good
things about pink is the effort to be
much more tactile and kinesthetic of doing lots more user dragging and moving
things around bad thing about pink maybe I shouldn't say the bad thing
the unfortunate thing about pink is that
it isn't going enough beyond the Macintosh in the direct manipulation
area I believe for pink in order for pink to be a successful concept and to
pay its way for changing over it has to solve the end-user programming problem
just because pink is a paradigm too kind of system it's a direct manipulation
system and the only thing really left to be done in direct manipulation that is
qualitatively important is this end user idea how am i doing on time should I
wrap up okay
[Music] okay okay so let me try a scenario out
on you and try and get you to criticize it and because there's such an old fuddy
duddy i keep on going back to some of the friends of the past space war i had
a lot to do with designing small talk and it's a wonderful thing to think of
in terms this is now we're shifting into the kids world when we start first
started working with kids we didn't know that working with kids would help us out
with adults that much because it was before all these studies that showed that the same problems of the end users
were shared by children and high school students and adults and so forth so
space war is just this game first video game invented at MIT in 1961 and the
spaceships floating around and you can blow your friend out of the out of the
sky and what's interesting about it is that it is actually rather easy to
program if you have an object-oriented language easy to program if you can
think of the few conceptual things I'm going to show you they're just a couple
of things that you actually have to think of in order to do this now if you
start thinking about things in terms of s equals VT like they teach you in physics class you're dead right what
does that mean however in computer terms where you have
a dynamic thing going over and over this
translates into something that only has an addition in it take the current
position and add some hop to it so what the computer does by its dynamicism this
actually takes the equations of motion of physics and makes them into
differential equations right even better than differential equations because the
well it basically our differential equations you can think of the deep the
DT is in the clock that ticks you past each thing and that gets you sort of
wonder if ative to nirvana here this is really critical
because the thinking of things in terms of simple additions is infinitely easier
for the end user so let me let me run you through it
here's how you would here's one way to do it with the child you get the child
to draw the draw a car first and then
you start talking about motion and get
the kid to think about moving from one place to another in making hops so here
we're making four hops and we've moved eight away we take physical bins the
open school kids use physical plastic bins for holding things because they
don't have permanent desks and you can
put this is sort of like variables but you can put where you are in the current
position and what the hop is in it you can get kids to change these on each other and see how big a hop they can
make and so it's all a game and so we
have this one simple idea that we're taking the number in position and adding it to the number and hop and then
putting the result back in the position and you can do lots of things right
there now what we want to do is go to
[Applause] if I lost it oh well now what we want to
do is to go to the bins that are in the
language for this kid and we want to put a two in the hot bin the way we do it
now here's a question what kind of numbers should you be using I claim like
I like vectors you know the remember I showed you this
so one of the problems with getting down to here is that it's hard for people
they haven't really learned this this is one of the ways of thinking about
numbers so I think thinking about every number as a kind of a trip actually
gives you more of an extension of what the numbers are for so I'm claiming in
this scenario and anybody can argue with me at any point here that what I'm going
to do is pick out a horizontal displacement from my Mac draw like
toolbox I'm going to dump it into hop and when I dump it in there it shows up
as a an arrow sign a displacement number
and some little carrots that I can so I just flick it up to a two and so what
I've got in there is a horizontal
displacement of two and the car is
already at some position and I see that it actually has a horizontal position
displacement of 30 and a vertical displacement of 105 some point
somebody's going to ask me why don't I do this with turtle geometry but I'll
tell you later why so what we do is to
let these backwards maybe they didn't all print out maybe
that's my problem so what we do is Dave Smith style we start moving things
around we put the cursor in the position and it shows up in the code we open up
the position number to find out the
operators that it has it gives us a plus we go to the hop guy it puts this in
here and now it surrounds it with a sort
of a lozenge in gray to show that that's a permissible result that's what we keep
on going because we want to take that result and put it back into position so it generates this kind of an assignment
statement position plus hop goes into position and we can keep on going if we
want but that's where we decide to stop and by adding a clock into this we can
get it to go over and over again and run the and run the car so what we have to
do in all of these games is we have to
take a situation that the child can understand there are several ways we could have done this we could have used
turtle geometry turns out that using turtle geometry prevents the kids from
ever finding out how to do space war
right think about it because you have to
do a kind of addition that turtle geometry doesn't have but this one is
perfectly understandable of what happens you can watch the position changing the
car goes back and forth you can do multiple you do multiple games and and
so forth then you introduce the idea of
looking at various views of this trip object that trip objects can be looked
at in various ways and one way is to
look at them as a horizontal displacement and vertical displacement and this is a more of a an abbreviation
for that another way of looking at them is in polar coordinates but you don't
say polar coordinates two kids the worst thing you can ever do in mathematics with kids is tell them the official
names for things but you get them to act out on the floor
of seeing this is another way of finding this place on the floor it's all done
with their bodies and then there's a as
we all know there's a very sensible way of thinking about what addition means
which is when you add one trip to another one way of actually getting the
answer directly is to see that this this way the two things separately add when
you have the number in this other form it takes you to the right place but it
is not clear exactly what the how you actually do the operation and you can do
them in the other order and get the same answer and so that the idea here is that
what you're building up now is a
collection of ideas completely built around a single notion this is where
who's you you suggested you should have fewer concepts fewer bricks okay fewer
bricks my belief is the same thing is that you should take one like one brick
and find a thousand things to do with it
because that is the way you get from the idea of understanding single instances
of the thing to actually understanding the concept as it projects another way I
would say is the main problem the end users have is that they can understand
the bricks but they can't project them into new situations and it's just
getting so that they can project some brick into a new situation is the is the
biggest barrier does anybody yep some disagreement I hope
because there's about three different things I'm hearing enters one is we want
you end-user skyscraper design okay or
one you end-user dog house design we're going to have a new and improved manual
architecture needs to learn from confused which ones are you advocating
which ones I think that the user I think
it is a mistake to put give the user system that they can't aspire to the
skyscraper in right and the the thing
that I hate I mean just a personal prejudice is I hate giving people a
concept that is in too weak a form so
that doesn't include the larger I'd rather spend a longer amount of time on
the on the powerful idea take months if
necessary to let because to me it's not important whether you know how to add
three and five and get eight you know cuz that that doesn't project yeah well
the question I think I think the question is I mean the end user can design a skyscraper perfectly well on
paper and it's not going to fall down right because the there's nothing
dangerous about the lines on the paper that they've drawn so I think that you
can give I think it deep it if the user has to sit down and and take something
dangerous like see where you can screw
yourself a hundred different ways before you can even turn around and I think there's no I think it's out of the
question but I think that if you can confine the whole one of the things that
you can get out of object-oriented approaches to the things you can confine the errors to a very tiny place
it's what Butler Lampson used to call fail fast is what you don't want is for
an error to happen long after
wiping out your database yeah but I
think that I think that's similar to what you have to do when you start having semi intelligent agents which is
better undo it's like the the agent at
the UNIX agent at Berkeley that somebody said I just ran out of file space I need
some more and 20 seconds later it came back and said ok now you have plenty of
file space that actually happened but
because because if it if that had
happened on a Mac it would have been all over because it deleted about a third of
his files and it it actually got rather high marks for being an AI for doing
that you think of what it had to actually think about in order to figure that out
and but the in that particular case
because it was on a fairly robust time sharing system it had an undelete so
delete didn't mean to lead it just meant mark these files for special treatment doing archiving and I think for any kind
of thing where you extending the franchise of the end user into the whole
file level and stuff like that you have to have infinite undo and other kinds of
things but yeah the real question is and all of these things is whether the end
user can do something interesting before their constructions get too spidery and
one of the hopes for instance in internet was an inheritance was that in
it that inheritance could provide scaffolding done by master programmers
but in fact it's only worked in a limited way because it's been difficult
to understand even what the scaffolding is for the end-users another question
probably have feel free to leave by the way because I know we're running over
yeah oh there's Jim
were you here when I was taking your name in vain they're enjoying them
having fun well I mean our experience is
that's been one of the hardest things for one reason that the the kids this is
why I say I think that the Mac actually provides some interference what I
talking to the kids I found it extremely useful to put a newspaper over the
screen so they can't see it and get them to talk to me in English
about the thing and because we've noticed an enormous disparity between the kids being able to do problem
solving when they're off the machine versus the almost nil amount of problem
solving they can do when they're actually sitting there okay and part of
that is because you know I believe that that would be better if the everything
we were doing was completely iconic they
might be better off than they are now but right now they're they have a play
field that's completely iconic and they're thinking sort of in iconic terms
and they have a programming language that's more symbolic and yet the when
you try and think of iconic versions for all the things that are in the symbols
is very difficult because there are some abstractions involved we're not really
referring to these things we're not really referring to particularly lengths
were referring to general lengths and so forth and what
we'll make pal a lot of students designed for learners who using
well I don't know what if you tell me
what that means I would say yes well
logo does though and the experience with logo has not been encouraging to that
level because the thing that is most opaque to the kids in logo is the is the
abstraction of making a procedure out of something they have the hardest so that
right yeah so there's a question about
maybe there should be something like components you know it's one of the it's
one of the one of the alternatives to this way of doing things is to say well
instead of coming up with something that is like an expression like those of us
that took mathematics Esme maybe what we should have instead is an incrementer
tool you know it's basically a component so it it isn't just a plus it's a thing
whose job it is it remembers what it's trying to increment by and it's it's
actual deployment in the system is whenever you want to bump something up
periodically you get one of these guys and stick it in there so then what you'd have in the code
would be something like you'd have something more like a folder that had
just the the position guy in there and
an increment or guy and that would be the whole code there'd be no assignment statement or anything else because you'd
be doing that that's why I was hoping somebody challenged me on that because that's a
completely different way of looking at it it might be better maybe bring ideas
for problem solving and I'm wondering now
right in fact one of the things you could say is mmm computers are too hot
problem-solving is really cool because it has this there's this detachment
thanks and so question is how can you cool down the Mac when you want one of
the ways of doing it is to make the images not jump around like if you go to over 100 frames per second the images
will steady down like they are on paper if you go to anti raster anti-aliased
graphics on the thing you'll start getting something that is more sketchy
you know the kinds of things you'd normally go to a back of an envelope or
even do it in your head in fact here's an analogy for I think what the problem is the easiest thing to make shapes with
is a ball of clay how many people are tried sculpturing sculpting here with
clay how many people got what they wanted right
why that clay will go wherever you want
it to and you can see it every step of the way you know it's perfectly WYSIWYG
right Dave we'll just go wherever you want you can make it incrementally you
can always see that it's wrong right that's not what I want right it's always
wrong so what do they do in art school do they give the art students a ball of
clay no way they gave them a lump of soap do they give them oil paints no way
they give them watercolor in other words non-reversible media why do they do it
because you have to have an image of some kind in your head it's not it's not
exactly the same as a graphic image but you have to have a very strong image of
what you're going after in order to get something neat to happen no matter how
plastic the medium is see this is the bug I think of the Macintosh is the
Macintosh is a lump of clay you know it
will go where you push it but in fact it doesn't build a strong enough image in
people's head of what the possibilities are and I think the challenge of the use
physical place to quit actually the challenge of the user interface design
of the future is that that it should explicitly build
an image in people's head that is powerful enough to allow them to create as well as to access so thanks a lot
thank you I want one last thing is I
want to give this talk a year from now year from now and be able to actually
have some conclusions here you schedule
it for August [Laughter]