[plt-scheme] Question on Teaching Scheme with DrScheme

From: Jerzy Karczmarczuk (karczma at info.unicaen.fr)
Date: Wed Nov 6 03:20:18 EST 2002

Eli Barzilay wrote:
> On Nov  5, Jerzy Karczmarczuk wrote:
> 
>>[...]
>>If what you really would use are mainly imperative constructs, FORWARD,
>>TURN, etc., why use Scheme at all?
> 
> 
> I think that you have it backwards (probably due to influence from a
> certain other language you advocate here...) 

... etc. showing getLine in Haskell which is somehow out of thread...

> so what was the point to begin with?
> 
> OTOH, Scheme does have side effects available, with the usual load of
> other advantages that probably do not need any advocation here -- some
> of them apply equally to the whole langauge including its
> side-effects.  So why *not* use it?
...

> I have recently gave up to the pressure and had a look at Python.  It
> has a lot of cute things but I don't think it's anywhere close to a
> good language like Haskell, which itself is anywhere close to Scheme.
> So if I do have imperative behavior in Scheme (without using any
> force, really), why should I go there?

Look, I didn't address my suggestion to *you*. You don't like Python?
Good. But this is your problem. So perhaps I clarify my point.

Teaching programming to kids (between 8 and 20 years) is delicate, since
the first language conditions them somehow. Syntax issues at the initial
level are not neutral. The interactivity is essential. But, over all, the
semantic model of the 'computational reality' is also useful, your pupils
should somehow 'feel' what they are doing.

Scheme is a possible solution, a very decent one, clean and universal.
But I am a bit abhorred by the tentatives to consider this a Swiss knife
for absolutely everything. I respect, and I appreciate enormously the
project "How to Design Programs" and other work of our well known "mafia",
but this is a (more-or-less, only Nobody is perfect) coherent pedagogic
view, while some, taken ad-hoc Logo emulators, with turtles, etc. - less.

A long time ago, very long, I had a talk to 5th graders (about 12y old)
showing them Logo. After some time they asked me: "where is this turtle?"
"Can you change its form from this silly triangle?", and a plethora of
other questions, upon which I concluded that I sold them the model of
THINGS in a computer, not of ACTIONS.

Good! But Logo turned out to be as lousy solution as possible. No future.

I became more careful. The HTDP people *are* careful, starting with simple
data, and insisting that the student never lose the purpose of the exercice
from view.

So, OK, Scheme, fairly enough, is good for that. Functional, imperative,
no problem. But if the imperative side is reduced to actions style Logo,
I personally believe that the answer to such questions as: where is the
turtle and *why/how* it moves when I type FORWARD, is essential. That's why,
despite the fact that I am a Haskell sectarian in my research, I will
advertize object-oriented approach to pedagogy. No, no C++. Python
or Smalltalk. Why? Because of
Simplicity, and transparence of the object layer.(Access to dictionaries)
* Interactivity. Including gestural interface.
* Reflexivity. (Inspectors)
* Persistence! The kids can store their objects for a later session, and
   they can share objects among themselves. Easier in Smalltalk, more
   difficult in Python, but doable (pickling, shelving, marshalling....

DrScheme is internally prepared to offer these functionalities, but they
must be implemented by somebody. That's why I mentioned Alice.


> What is Alice?  All I could get from google is some better-Aliza clone
> that talks to itself.

Other people answered you. Your Google did a poor job.


> But maybe that Alice thing is
> the magic idea that will convince me otherwise and make me commit to
> C++ for ever?

Such acrimony is utterly useless here, my dear Colleague.

Anyway this list is not the forum on which I will respond to your next
posting, why some things *seem* more natural in Python than in Scheme.
I state only that independently of the language, some "patterns" should
be available, and for the moment good patterns in Scheme are elsewhere,
not in the turtle package. Somebody asked whether do we need such
stuff for teaching. Some like it, others don't... All old teaching
dinosaurs are convinced that they know what is good for kids, and how
to offer them useful and interesting initial framework. Most are wrong,
and I assume that this applies to myself, that's why I refuse to commit
myself to Eine Sprache, Eine Kirche, Ein Paradigmat. Also sprach
Zarathustra.

Jerzy Karczmarczuk






Posted on the users mailing list.