SICP Study

Frontmatter

Dedication

This book is dedicated, in respect and admiration, to the spirit that lives in the computer. Alan J. Perlis

I think that it’s extraordinarily important that we in computer science keep fun in computing. Alan J. Perlis

Don’t feel as if the key to successful computing is only in your hands. What’s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more. Alan J. Perlis

Foreword

To appreciate programming as an intellectual activity in its own right you must turn to computer programming; you must read and write computer programs—many of them. Alan J. Perlis

Highlights

Every computer program is a model, hatched in the mind, of a real or mental process. These processes, arising from human experience and thought, are huge in number, intricate in detail, and at any time only partially understood. They are modeled to our permanent satisfaction rarely by our computer programs. Thus even though our programs are carefully handcrafted discrete collections of symbols, mosaics of interlocking functions, they continually evolve: we change them as our perception of the model deepens, enlarges, generalizes until the model ultimately attains a metastable place within still another model with which we struggle. The source of the exhilaration associated with computer programming is the continual unfolding within the mind and on the computer of mechanisms expressed as programs and the explosion of perception they generate. Alan J. Perlis

Since large programs grow from small ones, it is crucial that we develop an arsenal of standard program structures of whose correctness we have become sure—we call them idioms—and learn to combine them into larger structures using organizational techniques of proven value. Alan J. Perlis

The computers are never large enough or fast enough. Each breakthrough in hardware technology leads to more massive programming enterprises, new organizational principles, and an enrichment of abstract models. Every reader should ask himself periodically “Toward what end, toward what end?”—but do not ask it too often lest you pass up the fun of programming for the constipation of bittersweet philosophy. Alan J. Perlis

Lisp is for building organisms—imposing, breathtaking, dynamic structures built by squads fitting fluctuating myriads of simpler organisms into place. Alan J. Perlis

It is better to have 100 functions operate on one data structure than to have 10 functions operate on 10 data structures. Alan J. Perlis

Preface

Highlights

A computer language is not just a way of getting a computer to perform operations but rather … it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute. (Preface)

The essential material … is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, nor even the mathematical analysis of algorithms and the foundations of computing, but rather the techniques used to control the intellectual complexity of large software systems. (Preface)

Highlights

Underlying our approach to this subject is our conviction that “computer science” is not a science and that its significance has little to do with computers. (Preface)

Mathematics provides a framework for dealing precisely with notions of “what is. Computation provides a framework for dealing precisely with notions of “how to. (Preface)