From: bh@anarres.CS.Berkeley.EDU (Brian Harvey)
Newsgroups: comp.lang.scheme
Subject: Re: New York Times article
Date: 13 Apr 1992 14:39:14 GMT
Organization: University of California at Berkeley
NNTP-Posting-Host: anarres.cs.berkeley.edu

ola@duke.cs.duke.edu (Owen L. Astrachan) writes:
: I'm very tired of seeing intro Pascal books with chapters titled "The
: for statement", "The if and case statements", "The repeat and while
: loops" as opposed to seeing (in Scheme books) "Building Abstraction With
: Procedures" or "Managing State: Mutation".  Of course the former beat
: syntax to death, but this does NOT mean that the use of Pascal requires
: such an approach, just that Scheme makes it easier (perhaps) to do the
: right thing.
:  [...]
: Since the language issue seems to have such religious overtones, let's
: not have each group start a Crusade; let's cover the correct topics as
: best we can in the different languages.  Once people see how difficult
: it is in languages like Pascal, maybe Scheme will become more popular.  
: Of course we'll disagree on what the correct topics are, but it's easier
: for me to shout from the rooftops that these topics don't include
: syntactic details of a programming language than it is for me to shout
: that Pascal is the devil's own tongue.  I hope that different languages
: don't have to condemn us to a virtual Tower of Babel in intro cs
: courses.  

Of course the choice of language isn't the most important point.  But it's
not just a matter of how syntaxy the language is, either.  Pascal is the
product of a group of people with a certain specific view of what computer
science is about and how programming should be done.  They have high-level
ideas, but those ideas are pretty different from ours.  For example, they
have the idea that program development should be done top-down; that's why
in Pascal there has to be a "complete program" before you can start running
anything, while in Lisp we have no formal notion of a program at all, but
rather just deal with a bunch of procedures.

We are constrained by our choice of language just as much as they are.
They are forced into having chapters on syntactic constructs -- but they
like that, as Owen says.  (Even we have to explain COND, you know!)  We
are forced into having to rely very early on recursion and/or higher-order
functions -- but we like that, because we think those are important ideas.
They're *hard* ideas, though; I really don't think we can claim that Lisp
is easier to learn than Pascal.  Our claim has to be that the effort you
put into Lisp gives more intellectual payoff than the effort you put into
Pascal.  But we sometimes talk as if we had a transparent language, as
opposed to their constricting one, and it's not true.

I guess what I'm trying to say is this:  It's misleading to say, "instead
of arguing about programming languages let's settle the important content
we want to teach and then do that in whatever language is at hand."
It's misleading because the language argument *is* the argument about
important content, only slightly disguised.  If you tried to write SICP
in Pascal, and showed it to a Pascal person, they'd say, "But you've left
out all the important computer science ideas!  There's nothing in here
about strong typing!  There's nothing about top-down design, refinement,
or pseudocode!  You hardly put in any error tests!"  And so on.

P.S.  Thanks for the compliment about Computer Science Logo Style.  :-)