Python for non-programmers
kragen at dnaco.net
Tue Mar 7 04:23:33 CET 2000
In article <slrn8c8hg9.mdm.neelk at brick.cswv.com>,
Neel Krishnaswami <neelk at alum.mit.edu> wrote:
>Kragen Sitaker <kragen at dnaco.net> 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))
I am guessing from this example that you were taught from SICP, at
MIT. (Your mention of "problem sets" and your email address also
Obviously 6.001 is at least somewhat successful at teaching MIT
students basic CS --- and, at that, some really heavy stuff considering
that it's just a first-semester CS class.
The question is, I guess, is it equally successful at teaching
programming to people who are too dumb or uneducated to get into MIT?
Indications seem to be "yes", but it's hard for me to say.
>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.
At least the ad-hoc part is true. I think they are an ad-hoc invention
created to make computers economically feasible with the technology of
>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. ;)
Very slowly, and they generally remain confused for a long time.
Python is probably not a great language for teaching functional
programming. Writing numerical functions gets boring in a hurry, and
Python's aggregate data structures are all messy and inefficient to
deal with without mutation.
Python is probably a good language for teaching procedural programming.
I'll post a flaming rant about why CP4E is uber-important some other
<kragen at pobox.com> Kragen Sitaker <http://www.pobox.com/~kragen/>
The Internet stock bubble didn't burst on 1999-11-08. Hurrah!
The power didn't go out on 2000-01-01 either. :)
More information about the Python-list