do...until wisdom needed...

Douglas Alan nessus at mit.edu
Tue May 8 12:51:36 EDT 2001


Courageous <jkraska1 at san.rr.com> writes:

> The one missing alternative hypothesis is the most mundane of them,
> and the one that perhaps will stick in the advocates craw more than
> the others:

> Perhaps the majority of most of those who've tried Scheme (or Lisp)
> simply don't like it.

I've heard the story over and over again from many people: "I learned
Scheme (or Lisp) in college and I never really got it.  It just gave
me a headache.  And what's with all those parentheses!  I'll stick to C."

The reason why it would give them a headache is pretty clear: A course
that uses Scheme to teach Computer Science, for one thing, really
beats on recursion.  If you are interested in Computer Science, you
better understand recursion inside and out.  If you want to be a
run-of-the-mill programmer, no such proficiency is required.  In fact,
a programmer I know who doesn't have fond memories of using Scheme in
school just told me yesterday, "It seems that in order to understand
recursion, you have to already understand recursion."

Then a course using Scheme will have you rolling your own OO by
passing messages and using lexical closures to carry the state; it
will have you understanding the difference between dynamic scoping and
lexical scoping, tail recursion vs. normal recusion; it will introduce
you to higher order functions, lazy evaluation, infinite computation
streams; etc.  Every week you will be introduced to a new deep and
important concept that requires an "Aha!" moment of inspiration in
order to understand.  It's exhilarating and demanding, and probably
quite frustrating if you don't just love this kind of thing.  But if
you don't love this thing, Computer Science is probably not the field
for you.  (Though perhaps you can do okay as a Software Engineer.)

One can understand why many people would develop an aversion to Scheme
after this.  Heck, I still have an aversion to Modula2 after having
been assigned by a class to implement a working Modula2 compiler
before anyone had bothered to determine if the language spec was even
sound.

Regarding the parentheses thing -- I don't know why some people don't
like that.  I think that if people had an open mind, they would see
that Lisp's notation has its own beauty.  On the other hand, many
people don't have an open mind; for instance, many people I've talked
to summarily dismiss Python merely on the basis that it uses
whitespace to determine nesting.

|>oug



More information about the Python-list mailing list