do...until wisdom needed...

Graham Hughes ghughes at lynda.com
Wed May 9 01:33:03 EDT 2001


I got my undergraduate degree from UCSB two years ago, so I might have
something to add here.  I should prefix this by lumping Common Lisp
and Scheme together as Lisp for much of this despite that they are
very different.

There is a sad tradition in CS to use Lisp as a way to teach singly
linked lists and recursion, and nothing else.  People have for years
been convinced that Lisp was good for nothing else, to the point where
professors now are *teaching* that it is good for nothing else.  It is
also sometimes taught that Lisp is slow and interpreted.

Other languages are not immune to stereotyping; ML is sometimes used
as an example of a statically typed functional language but no survey
course/book I know of goes into the mutable cells that SML has, and
Ada for us was used as an introduction to hard core static typing.
But Lisp is the subject here, not Ada or ML.

MIT, who teach their introduction to programming course using Scheme,
are a major exception to this sort of nonsense; I believe that my
experience with Lisp was pretty typical, which was to say there was
*two* classes that mentioned Lisp at all, one as a part of a language
survey course (while the instructor knows better, the book never let
on that Lisp was actually a general programming language) and the
other was a briefly offered and then never again introduction to
programming in Common Lisp my first year.  Our introduction to
programming languages course was in Pascal, and I understand they're
using Java now.

Now, I since learned Lisp on my own, and in fact now Common Lisp is my
all time favorite language, beating out Smalltalk and Python as
well--but my CS education alone would have left me ill prepared to
understand it, and several of my friends don't understand what I find
attractive about the language.  This is not uncharacteristic, by any
means; the best thing my college did for me was permit me to take
stuff I was interested in and entirely ignore the proscribed course
ordering.

I should further note that Scheme and Common Lisp are very different
languages.  Common Lisp seems big, but in fact the standard is mostly
library, something that is always nice to have lots of; in contrast
Scheme is intentionally minimal, and R5RS is useless for real world
programs.  I couldn't even write a RC4 stream encryptor in R5RS,
because it didn't have a logical xor operation.
-- 
Graham Hughes <ghughes at lynda.com>
(defun whee (n e) (subseq (let ((c (cons e e))) (nconc c c)) 0 n))



More information about the Python-list mailing list