I'm trying to read chapter one of the famous book : Structure and Interpretation of computer programs.

The chapter one starts with a mysterious paragraph:

We are about to study the idea of a computational process. Computational processes are abstract beings that inhabit computers. As they evolve, processes manipulate other abstract things called data. The evolution of a process is directed by a pattern of rules called a program. People create programs to direct processes. In effect, we conjure the spirits of the computer with our spells.

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.

What is really a computational process ? And how does that relate to programs in the context of the above paragraphs ?


2 Answers 2


Computer programs are generally written to do something i.e. transform some input to some usually different output. That is the computational process that they are implementing.

Let's look at a concrete example. On unix there's a program named sort, the computational process it implements is sorting. There are various command line options that allow the exact nature of the sorting to be configured so that sort can be used for many common tasks requiring the lines of a file or other input to be sorted.


The most concrete concept mentioned in that definition is a program, which is created (notice: not usually written) by a programmer. Okay, maybe a programmer is a more concrete concept, but this is beside the point.

I say not usually written because programs are modernly written in high-level programming languages and then at some point translated into machine code instructions (often assuming intermediate forms along the way).

Those instructions are binary input signals (i.e. bits) represented by coded instructions understandable by a computer.

They are loaded into the main memory for the computer CPU (central processing unit, also called processor) to execute them.

The program itself is just a specific bit pattern.

Those instructions are decoded by the hardware into signals that control the various parts of the processor and main memory (RAM), in particular the ALU (arithmetic logic unit), causing it to operate on the data present in processor-local registers, which are loaded and stored from/to the main memory.

That electron dance performing an evolving data manipulation characterizes a computational process.

I believe this is no different than saying that a regular computer process run by e.g. a modern operating system on (ultimately) a CPU performs an evolving data manipulation (I refer to the ones you can see on Windows Task Manager, for instance).

As the process is executed, the data manipulation evolves -- although I'd daresay an infinite loop also could be called an evolving process.

You can see how this description matches the definition you provided.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.