Python for non-programmers

Neel Krishnaswami neelk at
Tue Mar 7 01:01:38 CET 2000

Kragen Sitaker <kragen at> wrote:
> The Scheme-as-CS-101 crowd seems to think that it's a good idea to
> put off the whole mutability thing until later --- just have names
> and values, and don't worry about mutation until later.

My own experience matches that -- when I was introduced to functions,
they were explained to me as basically substitutions. That is, if I

  (define (square x) (* x x))

then I could imagine the interpreter taking

  (square 4)

and rewriting it to

  (* 4 4)

This was a really vivid and effective metaphor, because a) it is just
like the functions we're taught about in high school algebra, and b)
is a simple enough evaluation mechanism that when deeply confused I
could write down what I thought my program should do at each step on a
sheet of paper and examine it for thinking errors. And when starting
programming, even a tiny 5 or 6 line program was enough to engender
deep confusion. 

I *hated* mutation, simply because I needed to start thinking about
the deeply bizarre (to the novice me) and extraneous notion of
"environments". I didn't see what they had to do with my program *at
all*, and as far I was concerned they were an ad-hoc invention created
to make me fail my problem sets.

I think it's possible for a total novice to handle a language with
either mutation (eg BASIC), or functions (eg Scheme), but not both at
once. That will confuse them unless they are sharper than I was when
starting out -- I honestly have no idea how people were able to learn
how to program with Pascal. ;)


More information about the Python-list mailing list