Home > Notes > Books > Notes and Solutions from Structure and Interpretation of Computer Programs

1 Building Abstractions with Procedures

Computational processes, the abstract beings that inhabit computers. Processes manipulate data. The evolution of a process is directed by a program. A process is like a sorcerer's idea of a spirit. It can't be seen or touched, but it is very real. In this analogy, programs are like spells.

Need a language to describe processes and this book uses Lisp. Invented in the late 1950s for reasoning about recursion equations, as a model for computation. Conceived by John McCarthy in "Recursive Functions of Symbolic Expressions and Their Computation by Machine".

Lisp is also a practical language. A Lisp interpreter carries out Lisp processes. Lisp is an acronym for LISt Processing. Lisp included new data objects called atoms and lists, which set it apart from other programming languages at the time.

Lisp evolved informally in an experimental manner. The community traditionally resists attempts to create an "official" definition. Lisp is now a family of dialects, which can differ in significant ways. The dialect used in this book is called Scheme.

Though it is not a mainstream language, Lisp is good for studying program constructs and data structures. Significantly, Lisp's processes, called procedures, can themselves be represented and manipulated as Lisp data.

  Next