1. Building Abstractions with Procedures
A computational process is indeed much like a sorcerer’s idea of a spirit. It cannot be seen or touched. It is not composed of matter at all. However, it is very real. It can perform intellectual work. It can answer questions. It can affect the world by disbursing money at a bank or by controlling a robot arm in a factory. The programs we use to conjure processes are like a sorcerer’s spells. They are carefully composed from symbolic expressions in arcane and esoteric programming languages that prescribe the tasks we want our processes to perform.
Being the start of the book, the subject matters are pretty light. He sticks to two subjects I find generally uninteresting at the moment, and the third which I find somewhat noteworthy. The first two are, getting people interested in programming, and the reasons lisp should be used to teach people it. Moving on from those two, he starts to talk about the elements of programming:
A powerful programming language is more than just a means for instructing a computer to perform tasks. The language also serves as a framework within which we organize our ideas about processes. Thus, when we describe a language, we should pay particular attention to the means that the language provides for combining simple ideas to form more complex ideas. Every powerful language has three mechanisms for accomplishing this: • primitive expressions, which represent the simplest entities the language is concerned with, • means of combination, by which compound elements are built from simpler ones, and • means of abstraction, by which compound elements can be named and manipulated as units.
This is a good description of a term people use so often: “Powerful”. Whether one language is more powerful than another has to do with how useful it is as a way to organize ideas; it’s use as a “language” in the human sense, just as with natural languages.