[comp.edu] Abelson & Sussman

sakkinen@tukki.jyu.fi (Markku Sakkinen) (03/16/90)

There were recently some postings that mentioned the book
"Structure and Interpretation of Computer Programs"
by Harold Abelson and Gerald Jay Sussman with Julie Sussman
(whatever the 'with' may mean).
Someone flatly condemned it, while someone else had a high
opinion of it.

I now got my hands on a copy of the book (5. printing, 1987,
no changes to the original printing from 1985 mentioned).
The name is misleading: it should be "... of Lisp Programs".
The book contains a lot of stuff and may be very good in several
aspects. However, it is a strong entrant in the "most biassed
programming textbook ever published" competition.
This especially regarding that, according to the Preface, it
"... is the entry-level subject in computer science at the
Massachusetts Institute of Technology. It is required of all
students at MIT who major in electrical engineering or in
computer science ..."

Other programming languages than Lisp are mentioned only in short
footnotes or not at all, and mostly in a negative light.
Here is a short list, with the provision that if something had
been omitted from the book's index, I would probably not have
noted it.

Ada - no mention, except as under PL/1.
Algol 60 - 6 mentions; credit for the idea of block structure
           given in main text (not footnote)!
Algol 68 - no mention.
APL - 2 footnotes, both positive.
Basic - 1 footnote.
C - no mention; I don't blame the authors for this,
    IBM 360/370 assembler isn't treated either.
CLU - no mention.
Cobol - no mention!
Forth - no mention.
Fortran - 2 mentions, one of them being that Fortran is the only
          currently widespread language older than Lisp.
Modula(-2) - no mention.
ML - 1 footnote.
Occam - no mention.
Pascal - 4 mentions, all rather negative.
PL/1 - no mention, except the pejoratively intended phrase
       "Pascal-PL/I-Ada camp".
Prolog - 2 footnotes, rather positive.
Simula - no mention.
Smalltalk - not in the index, but I came across 1 footnote.
Snobol - no mention.

None of the object-oriented extensions of Lisp are mentioned in the book
as far as I could see; of course most of them (except Flavors) did not
exist or at least were not well known yet in 1985.

Markku Sakkinen
Department of Computer Science
University of Jyvaskyla (a's with umlauts)
Seminaarinkatu 15
SF-40100 Jyvaskyla (umlauts again)
Finland
          SAKKINEN@FINJYU.bitnet (alternative network address)

nick@lfcs.ed.ac.uk (Nick Rothwell) (03/17/90)

In article <3793@tukki.jyu.fi>, sakkinen@tukki (Markku Sakkinen) writes:
>The book contains a lot of stuff and may be very good in several
>aspects. However, it is a strong entrant in the "most biassed
>programming textbook ever published" competition.
>This especially regarding that, according to the Preface, it
>"... is the entry-level subject in computer science at the
>Massachusetts Institute of Technology. It is required of all
>students at MIT who major in electrical engineering or in
>computer science ..."

So? A large number of "introductory programming texts" are pure PASCAL
or something, with no mention at all of other languages. I think
Scheme is a lot more suitable for illustrating principles of program
semantics and evaluation than PASCAL is. Shame it's syntax is so
unreadable :-)

>Other programming languages than Lisp are mentioned only in short
>footnotes or not at all, and mostly in a negative light.

I agree that this would be good, but a good overview of other
languages would be very time and space-consuming, and is
probably best left for another course and/or book.

>Markku Sakkinen

		Nick.
--
Nick Rothwell,	Laboratory for Foundations of Computer Science, Edinburgh.
		nick@lfcs.ed.ac.uk    <Atlantic Ocean>!mcsun!ukc!lfcs!nick
~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~
      A prop?   ...or wings?      A prop?   ...or wings?      A prop?

manis@cs.ubc.ca (Vincent Manis) (03/17/90)

`the most biased programming book ever published'? I would have thought
that honour might have gone to Kernighan and Ritchie, which has not one
chapter on Scheme programming, or perhaps to Doug Comer's XINU books,
which claim to talk about operating systems, but don't provide any sort
of fair comparison with MVS and VMS. 

Let's also ignore the fact that Abelson and Sussman explicitly didn't
write a book on programming, but rather on computer science. I, for
example, consider `Paradise Lost' a piece of garbage, because this
Milton guy seems to know absolutely nothing about how to code Fortran
FORMAT statements.

In any case, any sort of worthwhile book has biases: the author(s) have
to decide what they think is important and what they think is
unimportant. One simply can't cover every important thing in any field
in an introductory course; in fact, the design of an introductory course
is very much an exercise in trying to find out what's really important
and what isn't.

--
\    Vincent Manis <manis@cs.ubc.ca>      "There is no law that vulgarity and
 \   Department of Computer Science      literary excellence cannot coexist."
 /\  University of British Columbia                        -- A. Trevor Hodge
/  \ Vancouver, BC, Canada V6T 1W5 (604) 228-2394

barmar@think.com (Barry Margolin) (03/17/90)

Markku Sakkinen critiqued the Abelson & Sussman text because it doesn't
discuss any other programming languages other than Lisp (actually, it uses
Scheme, a Lisp-like language).  His complaint would be valid if this were
the text for a course on programming languages, but that's not what the
course "Structure and Interpretation of Computer Programs" is about.  The
purpose of this course is to teach computer scientists how to think about
programs, and how programs are executed by computers.  Scheme is used as
the language for examples.  The purpose of the course is *not* to teach
students how to program in Scheme, but the student needs to learn Scheme in
order to understand the examples and problem sets, and to do the lab work.
When I took the course there was only one lecture devoted to programming in
Scheme (actually, when I took it we were using a hybrid between Scheme and
Lisp called ULISP), as well as a few recitations and tutorials; the rest of
the course was about program structure and interpretation.

An analogy would be with the introductory electrical engineering course.
In order to do the lab work for that course you have to learn how to
breadboard circuits.  You wouldn't fault the course notes because they
didn't teach how to design and implement etched circuit boards, would you?
In both cases, the particular programming language and circuit
implementation technology are simply tools to be used to apply the concepts
being taught.

--
Barry Margolin, Thinking Machines Corp.

barmar@think.com
{uunet,harvard}!think!barmar

plogan@mentor.com (Patrick Logan) (03/17/90)

In article <3793@tukki.jyu.fi> sakkinen@tukki.jyu.fi (Markku Sakkinen) writes:
   There were recently some postings that mentioned the book
   "Structure and Interpretation of Computer Programs"
   by Harold Abelson and Gerald Jay Sussman with Julie Sussman
   (whatever the 'with' may mean).
   Someone flatly condemned it, while someone else had a high
   opinion of it.

   I now got my hands on a copy of the book (5. printing, 1987,
   no changes to the original printing from 1985 mentioned).
   The name is misleading: it should be "... of Lisp Programs".

The concepts transcend LISP. They are explained using LISP, but it is
not a "How To LISP" book.

   The book contains a lot of stuff and may be very good in several
   aspects. However, it is a strong entrant in the "most biassed
   programming textbook ever published" competition.

I can see how someone could come to that conclusion. But I don't agree
and I think the book has a lot to offer that will be missed if you let
this be your final conclusion.

   This especially regarding that, according to the Preface, it
   "... is the entry-level subject in computer science at the
   Massachusetts Institute of Technology. It is required of all
   students at MIT who major in electrical engineering or in
   computer science ..."

So?

   Other programming languages than Lisp are mentioned only in short
   footnotes or not at all, and mostly in a negative light.

The book is not a survey of programming languages.

   Here is a short list, with the provision that if something had
   been omitted from the book's index, I would probably not have
   noted it.

This first impression of yours does not appear to come from really
progressing through the book and working on the concepts it is
teaching. Accepting your first impressions, try to go back and spend
some time with the lessons and excercises and see what you learn.

It seems to me you've judged the book based on what you think it is
supposed to teach, but I would suggest you've missed the point
somewhat. The book is about abstractions and implementing
abstractions. It really isn't about LISP being the authors' favorite
language, or at least it is more than that. Much more. It is a very
unique book, from my experience. 

**** MY MAIN POINT:
I wouldn't let it replace any other good book in my library, but it is
a welcome addition.

   None of the object-oriented extensions of Lisp are mentioned in the book
   as far as I could see; of course most of them (except Flavors) did not
   exist or at least were not well known yet in 1985.

Again it is not a survey nor an advertisement of a particular LISP
system. It is a very minimalist LISP system used to illustrate the
concepts of the book.

I would urge people to get a copy of a Scheme system and this book and
have at it. There are several free Scheme systems and there are
several Scheme primers that can be used along with this one.

-- 
Patrick Logan  uunet!mntgfx!plogan | 
Mentor Graphics Corporation        | 
Beaverton, Oregon 97005-7191   	   |

grano@cs.Helsinki.FI (Kari Gran|) (03/19/90)

(comments on the article of Markku Sakkinen about the A&S)

	It is true that A&S uses LISP (Scheme, to be exact), but then
again, you _have_ to choose a language to teach with.  Scheme has a few
very fine properties that make it suitable for such a purpose, including
first class functions, block scoping, easy syntax and something which I
would call as 'inclination towards functional programming.'

	You're right when you say that it doesn't mention other
programming languages very often.  But the bias of the book is towards
the structure and interpretation of programs, not any particular
languages (just as the title says).  With Scheme, you can teach the
basic _principles_ of e.g. object-orientedness using the first-class
functions without committing to any particular dialect, be it CLOS, PCL,
C++ or anything.  And I think we can all agree on the fact that Pascal
does have some serious drawbacks that lessen its suitability as an
educational language - no first-class functions and other clumsy
limitations.

	I think there's one negative point in the book, though - it goes
too far.  The last chapters deal with writing a compiler, a task which
IMO is not quite the thing to teach in the first course on programming :-).

Kari.
--
Kari Grano	grano@cs.helsinki.fi	Hey, my opinions are just mine..
	"I've got a thousand telephones that don't ring" - R.Z.

jeff@aiai.ed.ac.uk (Jeff Dalton) (03/20/90)

In article <3793@tukki.jyu.fi> sakkinen@jytko.jyu.fi (Markku Sakkinen) writes:
>I now got my hands on a copy of the book (5. printing, 1987,
>no changes to the original printing from 1985 mentioned).

There are some, but they don't change the aspects you comment on.

>The name is misleading: it should be "... of Lisp Programs".

The idea is that it's a book about programming rather than about
programming languages, but they had to pick some notation and chose
Scheme.  You may wish they'd chosen something else or written a book
like Ravi Sethi's _Programming Languages_ (an excellent book in my
opinion) instead; but since their aim wasn't to cover the varieties
of programming lamnguages, it's not surprising that they didn't.

They are fairly clear about what they're trying to do.  Eg:

   ... we believe that the essential material to be addressed
   by a subject at this level is not the syntax of particular
   programming-language constructs, nor ... [p. xv]

>The book contains a lot of stuff and may be very good in several
>aspects. However, it is a strong entrant in the "most biassed
>programming textbook ever published" competition.

I suggest that it simply had different goals than the others.

I further suggest that you notice the bias more because it is in
a direction that is unfamiliar.

-- Jeff

jeff@aiai.ed.ac.uk (Jeff Dalton) (03/20/90)

In article <7222@ubc-cs.UUCP> manis@cs.ubc.ca (Vincent Manis) writes:
>Let's also ignore the fact that Abelson and Sussman explicitly didn't
>write a book on programming, but rather on computer science. 

While I pretty much agree with everything else you said, I think it's
fairly clear that the book is in fact a book on programming, although
not just on programming.  Read the Forward and Preface if you don't
think so.

fischer@iesd.auc.dk (Lars P. Fischer) (03/21/90)

In article <3793@tukki.jyu.fi> sakkinen@tukki.jyu.fi (Markku Sakkinen) writes:
>The name is misleading: it should be "... of Lisp Programs".
>... it is a strong entrant in the "most biassed
>programming textbook ever published" competition.
>...
>Other programming languages than Lisp are mentioned only in short
>footnotes or not at all...

A&S is not a book on programming languages. It's a introduction to the
concept of programming, of how to think about programming, how to
solve problems, etc. It teaches the principles of program construction
and algorithm design in an excellent way.

The focus of A&S is strongly on design issues. It demonstrates
abstract data types, modular design, use of nested definitions, etc.
It shows that programming can be regarded as language design. 

Overall, A&S tries to teach students not only programming (easy), butt
*good* programming (hard), and it does a good job in developing in the
student a sense of program quality and an approach of thinking about
programs. Like Brooks, Knuth vol. 1-3 and a few others, it's one of
those books no computing researcher or practitioner should be without.
Even wtwolfe might learn something :-).

>None of the object-oriented extensions of Lisp are mentioned in the book...

No book can cover every subject. Most of the principles teached in
A&S are applicable to any language and any style (OO, imp, func, ...).
You wouldn't want to teach OOP without demonstrating decomposition and
the like, would.

As per the language: Scheme is quite a nice language, not unlike
Pascal. It's a statically scoped imperative language, it supports
nested definitions and so on. It also handles higher-order functions
and the like, and doing OO-style programming in Scheme is no harder
than using CLOS (or whatever). Scheme is small, easy to grasp, and it
lets you experiment with all kinds of programming styles.

Nope, I'm not a Lisp hacker. I do all my programming in C and C++.

/Lars
--
Lars Fischer,  fischer@iesd.auc.dk   | Q: How does a project get to be one
CS Dept., Univ. of Aalborg, DENMARK. | year late?  A: One day at a time.

warlord@athena.mit.edu (Derek Atkins) (03/21/90)

I am a student at MIT, and I just took the Computer Science course entitled
'Structure and Interpretation of Computer Programs,' taught by Gerrald
Sussman.  I am appauled at the hulla-baloo over the book of the same title...
The arguments put forth show little insight into the book's purpose..

Granted, the book has its faults, as does K & R's book on C.  None-the-less,
before you go on attacking a book, you should READ it, not quote it...
Take a look at 6.001, the 'Structure and Interpretation of Computer Programs',
MIT's introductory compuiter science course:

The course is there to teach how to understand and create structured computer
programs, and, in my opinion, has done well.  What you are complaining
about, is the use of Scheme.  Well, in teaching structured programming, one
must choose a medium with which to program, and the medium chosen was Scheme.

This, however, was not a bad choice.  It you read the book, you would have
seen, for the most part, what was taught in the course, but not how, nor
how long, each topic was covered.  For example, we spent about three weeks
on the meta-circular evaluator.  This was done to teach how an interpreter
works, in the general sense.  Granted, it WAS taught in scheme, but we
were told that "these things" applied to programming in general....

Another reason that Scheme was a good choice:  It's a relatively easy language
to learn most of the primitives in..  So, we could easily get to the rest
of the course.  Try doing that with common LISP or C (or pascal, or....)
But, don't forget my original argument, and the purpose of the course:  To
teach the 'Structure and Interpretation of Computer Programs.'

When you teach someone to drive, you are told to stay on the right (or left)
hand side of the road (depending on the country)...  However, not until you
are actually TAKEN DRIVING in a car do you actually experience it..  Now,
does it matter what TYPE of car you are taken in?  Well, it might make
a difference between manual and automatic transmition, but beyond that
a car is a car...  Each has its ideosyncrasies: i.e., handling, acceleration,
braking, etc., but each drives the same... You just choose the car that is
the easiest to use for what you are trying to teach (or learn). 
***Well, the SAME APPLIES here...  It doesn't really matter which language
is used, for they all (for the most part) are the same...  You just choose
the language that best fits what you are trying to teach...

'The Structure and Interpretation of Computer Programs.'

BTW: The book mentions that scheme was chosen for ease of use and primities,
and that many other languages are available for general programming....

       Derek Atkins -- MIT '93 -- Electrical Engineering
--warlord@athena.mit.edu         ARPA
...!mit-eddie!mit-athena!warlord UUCP
--s20069@mitvma                  BITNET

ken@aiai.ed.ac.uk (Ken Johnson) (03/22/90)

I thought the best thing about the book was the Introduction, which
describes the `Lisp cult'.  Parts of it are so well written that they
really ought to be read aloud. 


-- 
Ken Johnson, AI Applications Institute, 80 South Bridge, Edinburgh EH1 1HN
E-mail ken@aiai.ed.ac.uk, phone 031-225 4464 extension 212

Message from god@console: /dev/sea 98% full: have a fish  ><{ (`>