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