Structure and interpretation of computer programs

p. 1

Zotero

Using Lisp we restrict or limit not what we may program, but only the notation for our program descriptions (xi).to-process

Every computer program is a model, hatched in the mind, […] at any time only partially understood. 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 (xi).to-process

The source of 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. If art interprets our dreams, the computer executes them in the guise of programs (xi)!to-process

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 (xiii).to-process

Lisp programs inflate libraries with functions whose utility transcends the application that produced them (xiii).to-process ❧ Cf. constructive problem solving

The essence of this change is the emergence of what might best be called procedural epistemology—the study of the structure of knowledge from an imperative point of view, as opposed to the more declarative point of view taken by classical mathematical subjects. Mathematics provides a framework for dealing precisely with notions of “what is.” Computation provides a framework for dealing precisely with notions of “how to” (xviii).to-process