[plt-scheme] Question on Teaching Scheme with DrScheme

From: Jerzy Karczmarczuk (karczma at info.unicaen.fr)
Date: Wed Nov 6 04:50:25 EST 2002

Eli Barzilay comments my "ad" of relexive languages like Python
or Smalltalk:

>>(Access to dictionaries)
> That's closely related to one of the major things I have against the
> language.

I wonder why.
My positive feelings towards Lisp were triggered by the fact that I could
analyse the context of my bugs, that I could see a conveniently
formatted traceback with the inspection of all the variables, etc.
Actually, I still believe that if somebody cannot debug a program in
Smalltalk (or in Python), he *really doesn't want* to find his faults,
perhaps subconsciously. Scheme nowadays is more efficient than Ye
Old Lisp of YonderDays, but its auto-diagnosis facilities are less

Today, when I teach Python to students of Neurosciences who are true
newbies, one of my leitmotifs is: "You are never alone with your bugs,
we will see what's wrong, looking at your variables NOW".
When I teach computer graphics in Scheme to math/info-oriented folk,
I suggest: "close your closures, localise the scopes of your variables,
add some ad-hoc tracing instructions, make use of the Good Structure
of procedures in Scheme". And when I teach compilation to much older
and blasés students of CS, I claim that the strong typing discipline
should help them to avoid statically 80% of their silly bugs. Each
niche has its peculiarities. Strong, static typing for newbies is
mortal, you would pass an entire semester before writing decent,
interesting programs, so dynamically accessible dictionaries are
*really* helpful, even if the structure of Python programs is much
worse than, say, in Pascal, not even mentioning Scheme...

> [Just out of curiosity -- did you ever hear about something called
> concrete abstractions?  The cubed thing that I'm including with
> Swindle is based on that work (which comes from Grame in Lion).  The
> basic idea is that it is easier for people who are not programmers to
> take abstraction on concrete objects rather than on syntactic
> identifiers that are an artificial addition to your world.]

Well, I have heard about that doctrine. Who, who uses Scheme to teach
hasn't heard about the book by Hailperin, Kaiser and Knight? There are
also such papers as something about  "robotics" for children, about
perception and control rules, written by Sharona Tal Levy et al., but I
lost this article (it may be irrelevant). I know your talk (slides,
lousily formatted btw., check, please,: 
http://www.cs.cornell.edu/eli/misc/booms-talk.ps.gz) written with Mira
Balaban etc. One of my pals is a specialist in computer music, and we
worked together a bit on some student projects related to MidiShare
interfaced to Scheme [and now he is yelling that he doesn't want to
change DrScheme from 1.3 to 2, because formerly it worked, and now, hm...],

YES. If we want to use Scheme to act on objects (real robots or simulated)
they should be "concrete" in the sense that they should be *explicit*.
This is my personal view. Music BTW is a fascinating domain, even for
a half-deaf person like myself...

Jerzy Karczmarczuk

Posted on the users mailing list.