• Post Reply Bookmark Topic Watch Topic
  • New Topic

SICP Abelson & Sussman  RSS feed

 
Marlene Miller
Ranch Hand
Posts: 1392
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Structure and Interpretation of Computer Programs
by Abelson, Sussman, and Sussman
http://mitpress.mit.edu/sicp/
1. What is the value of this book for a professional programmer?
Is the content of this book of value mostly for MIT students and professors and research computer scientists, or is it for anyone?
Will this book somehow help us to be better professional programmers?
2. What is this book about? How would you characterize the content and purpose of this book?
----
The amazon reviews are polarized. I would like your point of view from your own experience of having read and used it.
I have been invited to follow along in this course cs22. I am trying to figure out who this book is for and where it fits relative to other, more practical and necessary things to learn.
Thank you very much for your ideas. Marlene
[ January 08, 2004: Message edited by: Marlene Miller ]
 
David Weitzman
Ranch Hand
Posts: 1365
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Many respected computer science departments appear to have settled on a certain technique for adapting systems hackers to the more theoretical nature of computer science. They have students work with a language that perhaps only a few have ever used before and that requires them to rethink their approach to writing software. Many universities such as MIT use Scheme. At Carnegie Mellon the language is SML (also a functional language designed by academics). At CalTech it looks like they use Modula-3. The list continues.
Except for the ones who go into academics, none of the students will actually ever be employed as SML coders. The mental gymnastics required in these courses will, however, lead to a broadening and strengthening of the students' understanding of computational models and algorithm construction. Against that background, I'll attempt to answer your questions.
1. What is the value of this book for a professional programmer?
No J2EE or desktop application programmer is going to stumble across a problem and consult SICP for guidance. However there is a reason why employers like to hire people with Computer Science degrees and no familiarity with the software engineering process. Familiarity and fluency in a variety of computational models enables people to quickly find efficient and correct solutions to problems while working within the linguistic constraints of whatever language they use. The book isn't necessary for a professional programmer, but I think books of this variety are healthy reading for coders of all types.
2. What is this book about?
The best description of the book contents are the book contents themselves. The general idea is that the book defines a model of computation from scratch and demonstrates as best it can how to use that model of computation to accomplish tasks.
Hope this was helpful. Note that I haven't read more than a bit of SICP a long time ago, so my impression may not be as accurate as that of someone who actually read the whole thing.
[ January 07, 2004: Message edited by: David Weitzman ]
[ January 08, 2004: Message edited by: David Weitzman ]
 
Mapraputa Is
Leverager of our synergies
Sheriff
Posts: 10065
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I read the book and I loved it. Here I should note that I did not take any formal course/class, and freedom to skip whatever part I found too challenging might have contributed to my ecstatic enthusiasm.
MM: What is the value of this book for a professional programmer?
It's a difficult question, since the answer requires meta-skills rather than programming skills. To have some mental framework, let me reuse my summary of Alistair Cockburn's classification of learning stages:
"In the following stage learners need one procedure that work, "they copy it, they learn it", and they need a very detailed description of this procedure. In the next, detaching stage, people learn several ways to do the job along with advantages and shortcomings of each. In the third, fluent stage, they forget about procedures, as they do not need them."
It was said that "Pragmatic Programmer" is intended for the Stage-3 learners. Based on this classification, I would say that SICP is for the Stage-4 learners.
Now to proceed further we need another procedure. Talking about this book, Michael Ernest thoughtfully mentioned Leopold Stokowski's words about music: "some is written for the mind, some for the soul, some for its own sake". Let's see how we can map this on our subject.
1) For the mind -- a formal model of programming was historically based on lambda-calculus, and Lisp is called "executable lambda-calculus". SICP is a rather light introduction into this dry and formal discipline.
2) for the soul - I cannot name any other book on programming whose subject I would consider "beautiful". In fact, one of the goals stated in its preface is to teach a student to appreciate "aesthetics of programming".
3) for its own sake. There is still an argument over whether math is invented or discovered. This book is more about discovery, and the beauty it shows exists objectively, I believe, if even a reader failed to appreciate it. In this sense the book is "challenging" -- but it's a real challenge -- there is no artificial complexity.
Will this book somehow help us to be better professional programmers?
No more than listening to the music produces better Nobel Prize physicists. Seriously, I also read Amazon's reviews and it seems that students, for whom the book is written, suffer most, while all the praises come from more experienced crowd. I am not sure this is the best book to start learning programming, unless you are mathematically or philosophically inclined, but I think every programmer should at least try to read it at some point.
 
David Weitzman
Ranch Hand
Posts: 1365
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The amazon.com reviews are pretty amusing.
One thing that strikes me is the large number of low ratings given by people who apparently misunderstood the purpose of the book. Some thought it was an introduction to programming, which it most certainly is not. Others thought it was meant to be an algorithms text and compare it to books that catalog data structures and algorithms. It's more about the ways we can formally express algorithms than the specific algorithms we may choose to express.
The review that sticks out in my mind is Paul Graham's. Paul Graham is well respected in the programming community (even if he does make mistakes from time to time). I can't think of any books to cite in response to question three, "Does any other book fulfill this purpose better?" If you find that your responses to questions one and two match what you're looking for, then SICP is likely the best current book for the job.
 
Marlene Miller
Ranch Hand
Posts: 1392
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you very much David and Mapraruta for your ideas. Thank you for your time.
It�s a mysterious book.
 
Mapraputa Is
Leverager of our synergies
Sheriff
Posts: 10065
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Marlene, I do not know about other, buy you should read this book.
 
Marlene Miller
Ranch Hand
Posts: 1392
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you Map for your advice and encouragement.
I am interested in foundations. I would like to understand programming languages from principles.
Here are a few comments from the amazon reviews that interested me:

a way of synthesizing what you already know, and building a rich framework onto which you can add new learning over a career
The real point is to teach some very core foundations of computer science that show up everywhere. For example, supposedly revolutionary XML looks a heck of a lot like a nested scheme list, first described in 1960. And processing an active server page (or Java server page) is very much like the textbook's specialized language evaluator. Finally, c++ polymorphism through vtables and part of Microsoft's COM mechanics are the exact same thing as the book's data-directed programming section.
Put another way: why do so many popular computer books take 1000 pages to describe a few trivial concepts?

Step 1: download DrScheme
[ January 08, 2004: Message edited by: Marlene Miller ]
 
Marlene Miller
Ranch Hand
Posts: 1392
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I just found something in my current-favorite, trustworthy, down-to-earth book, Programming Language Pragmatics by Michael Scott. In the appendix in a paragraph about Scheme, the author says
The book by Abelson and Sussman, used for introductory programming classes at MIT and elsewhere, is a classic guide to fundamental programming concepts, and to functional programming in particular.
I suppose it is reasonable to spend time on a classic guide to fundamental programming concepts.
[ January 10, 2004: Message edited by: Marlene Miller ]
 
Marlene Miller
Ranch Hand
Posts: 1392
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I found another endorsement for this book.
The authors of Essentials of Programming Language say this
The most important books are those that change the way one looks at the world... The first is Structure and Interpretation of Computer Programs... This is a challenging introduction to programming that emphasizes general problem-solving techniques and uses Scheme throughout. We often list this book as a required text in our courses, just because every computer scientist and programmer should read it.
(I wonder what makes it challenging?)
 
Mapraputa Is
Leverager of our synergies
Sheriff
Posts: 10065
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks for posting, Marlene. I got an insight from one of your last posts. Of course, now I cannot figure what exactly triggered it.
But whatever it was , I think now I better understand what I like about SICP book. It is much like Donna Jo Napoli's "Syntax" book I read (the next natural step after learning all this stuff about computer languages is to look how human languages work!).
Here are some quotes from Amazon:
Napoli's book employs an inductive approach to teaching this material. Students are presented with data from the start and led to considerations of the data that enable them to develop a theory of grammar. The organization is designed to allow students access to the intricate theory of Government and Binding without intimidation or mindless memorization. Extensively classroom tested, each chapter of the text is enhanced by numerous problem sets (covering English, Japanese and Romance languages), reflecting Napoli's conviction that in order to truly understand syntactic analysis, one must do syntactic analysis.


The best thing about Donna Jo in my opinion is that, unlike other syntacticians, she doesn't tell you things. She makes you come up with your own ideas, and discard them if they turn out to be invalid


This gets very frustrating at times for students because it seems that she never actually tells the reader anything; merely waits for them to discover everything without too much help.

This was my impression too: problems were very interesting and exciting, but at the end I wasn't sure what I learnt. Frustrated, I decided to re-read another book about syntax, which I read before and which is written in more traditional, descriptive style. I was amazed how differently I read it this time. Concepts and theories that were abstract, dry, and foreign on first reading, came to live and they were my good friends.
SICP book has the same effect. It is "learning by doing", which means you won't get as much information as from "learning by reading" books, and SICP is not a substitute for them. But these books are no substitute for SICP either, because the best, synergistic, effect can be achieved by using them together.
 
Marlene Miller
Ranch Hand
Posts: 1392
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you very much Map for the new insights.
This gives me some ideas on how to read SICP. Work all of the problems, because that is the source of understanding. Look for hints from the author, but you have to synthesize the big meaning for yourself. Be patient.
Is there a book that presents the same ideas as SICP in a descriptive style? a complement to SICP?
Thank you for the reference to Napoli�s Syntax. I am curious about linguistics, semantics and etymology. I�ll put that book on my list of things to read.
How would you define a computational object?
 
Jon McDonald
Ranch Hand
Posts: 167
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Just to let you know:
The guys who wrote SICP taped a course upon which the book was based. You can download these lectures for free! I don't remember where it is located, but if you search on google for it, you should find it.
Jon
 
Marlene Miller
Ranch Hand
Posts: 1392
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you Jon. I found it here.
I also found an informative review of SICP here. The review explains how SICP fits in with other books.
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!