Teaching Children Programming
Marcel Weiher
marcel at metaobject.com
Sat Nov 13 15:10:28 UTC 1999
> From: John.Maloney at disney.com
>
> You see, we're not completely happy with things as they are.
> We've been building and testing some content based on the EToy
> scripting system, but we're dissatisfied in two opposite directions:
>
> 1. it isn't powerful and self-extensible enough, and
> 2. it isn't simple enough for the first-time user.
>
> Seems like a contradiction, but we always try to have
> our cake and eat it, too.
Yes, I've been looking into that as well in terms of end-user
'programming' in the graphic arts, which is probably a harder problem
than working with children. :-) More power is a 100% requirement
for achieving simplicity, because the difficulty for most users is
not mastering the language elements, but grokking how to put them
together to do something useful.
As a matter of fact, I am not so much interested in programming as
in allowing users to *create abstractions* as painlessly as possible.
The best would be for them to hardly even notice.
Take a typical illustration/layout program. Usually the only
practical method of *creating* abstractions, as opposed to using the
abstractions provided, is to assemble elements into a group, but such
a group is completely static. My current idea is to start with
"grouping" and take that into the direction of a full template/class.
The user would be able to take a group and convert that into a
"template". Then they should be able to specify which features of
this template are variable. The way to do this is to mark a feature
of one of the sub-objects within the group as editable, this feature
then becomes visible in the group/template inspector.
Attributes can also be related, for example the "color" attribute of
several sub-objects can be set with a single top-level inspector (a
sort of data-flow connection). More complex relationships require a
constraint mechanism (hello ThingLab).
Only if all else fails is actual imperative programming required.
Marcel
More information about the Squeak-dev
mailing list
|