Choosing a programming language as a competitive tool

Douglas Alan nessus at mit.edu
Mon May 7 04:25:12 EDT 2001


"Alex Martelli" <aleaxit at yahoo.com> writes:

> "Douglas Alan" <nessus at mit.edu> wrote in message

> > That's not true -- no one would ever even think of teaching Computer
> > Science in Perl,

> I'm not too sure, although I have no certain knowledge to the
> contrary.

Okay, well, if you ask me, if they use Perl they are not teaching
"Computer Science" when they do so -- they are teaching computer
engineering for the insane, or something like that.  Perhaps a bit of
Perl would be appropriate when teaching about regular expressions, but
only by someone who is ignorant as to the fact that there are much
better languages out there for such things (e.g., Python).

> > Python would also be a good language for teaching Computer
> > Science.  (Not as good a language as Scheme, though, which is a
> > dialect of Lisp.)

> So, comparing them as "dialects of Lisp", what do you believe makes
> Python not as good as Scheme for teaching CS?

Well, I said that Python "is practically a dialect of Lisp" not "is a
dialect of Lisp".  The reason that Python is not as good for teaching
Computer Science as Scheme is, is (1) because Python is not a straight
forward translation of lambda calculus into a programming language,
the way that Scheme is; (2) because you'd have a hard time using the
textbook *Structure and Interpretation of Computer Programs*, which is
the only book that should ever be used for teaching Computer Science 101.

> But some CS introductory courses might target another kind of
> student -- one better served by Python's "prettiness" and ease of
> use for many tasks, with the mechanics of OO already built-in rather
> than needing to be constructed, but still pretty well "exposed" and
> tweakable for didactical purposes.

I think for Computer Science 101, it's a wonderful exercise for the
student to construct the basics of OO, the way one would do in a
course that uses Scheme.

> Maybe it depends on how many _other_ CS courses the typical student
> of that introductory course is expected to take over his or her
> academic career.  It may make a difference whether the introductory
> course is likely to be just the first of many CS courses, or, at the
> other extreme, pretty likely to be the only one, or one of two/three
> at most.

*Structure and Interpretation of Computer Programs* touches on just
about every important concept of Computer Science, and it can be
taught in a single semester.  This is why it is such an incredible
textbook.  If you could only take a single course to become a
"Software Engineer", this wouldn't be the book to use.  If you wanted
a single course in "Computer Science", it would definitely be the one.
It would also be the best textbook for starting a Computer Science
major.

|>oug



More information about the Python-list mailing list