[Edu-sig] On the front page

David Scherer dscherer@cmu.edu
Thu, 27 Apr 2000 18:25:15 -0400


> Alice does take it a step further by employing Python scripting,
> true.  But if someone
> else has a design whereby they have a macro capability attached to a
> joystick, let's say, and avoids scripting - isn't that an
> 'improvement' in design, depending on your goals.

Depending on your goals, yes or no.

Arthur, can you clarify the position you are arguing *against*?  I don't
think anyone here has suggested that Alice is a great environment for
teaching programming.

Moreover, after re-reading your first post this morning, I have the
impression that you intended to make a more general point, and brought up
Alice only as an example.

Every possible programming system is an "abstraction":

(a) Some interface that is exposed to the programmer
(b) Some implementation that is not exposed

Systems can be designed in layers, so that the interested programmer can
roll back the line between interface and implementation at will.  However,
in general we eventually hit a level at which we cannot or will not go
further and treat the remaining implementation as "magic."

A great deal of debate in this forum, from Kirby's objections to PyGeo to
your recent complaints about Alice, centers around where this line should be
drawn.  Python already provides a rather high level of abstraction, with
~100,000 lines of C code in between you and the (even larger) operating
system.  A system like Alice, PyGeo, or my own Visual adds more abstraction.
The average piece of commercial software adds even more.

It is possible to have too little abstraction and it is possible to have too
much.  Any given system can fall into either category depending on what we
want to accomplish, and, probably, every educational environment will have
different needs on this scale.

I think, therefore, that it's best to point to a specific situation when we
discuss what should be abstracted away and what should not.  For example, I
often discuss the specific needs of the physics course for which I am
developing libraries, because I know that those needs are not the same as,
for example, the needs of an introductory programming course.  There is
still plenty of room for debate, but less danger of talking past each other
if we stop to paint a picture of the environment in which we intend to
design.

Dave