hraness

saved

Programming as Theory Building

by Peter NaurMicroprocessing and Microprogramming

gist

Peter Naur's 1985 Microprocessing and Microprogramming essay, from his 1984-08-28 Euromicro 84 keynote in Copenhagen, treats programming as the work of building a tacit theory of how a real-world activity is matched by program execution. Code and documentation are secondary carriers. People who hold the theory can map the world to the text, justify each part, and see which modifications extend the design. A program dies when that team dissolves. Revival from documentation alone is strictly impossible, and starting over is usually cheaper.

ideas

  • The theory lives in the programmers. They must know how the world maps into the program, why each part is there, and how a new demand resembles what the design already handles.
  • Documentation cannot carry the theory. Group B had the compiler text, annotations, and design write-ups, and still proposed patches that wrecked the structure Group A could repair on sight.
  • A program dies when its team dissolves. Execution can continue. Intelligent modification cannot. Rebuilding the theory from the text is strictly impossible and often more expensive than a new solution.
  • Cheap edits are a text-production fantasy. Flexibility has to be designed and paid for in advance. Patches that are behaviorally correct still decay the program when they ignore the theory.
  • Methods cannot sequence theory building. A theory has no inherent parts or order. Familiar model solutions help, but the programmer chooses techniques. That makes programmers irreplaceable professionals.

quotes

the proper, primary aim of programming is, not to produce programs, but to have the programmers build theories

Peter Naur, stating the essay's governing claim.

the full program text and additional documentation is insufficient in conveying to even the highly motivated group B the deeper insight

Peter Naur, on the compiler team's failed transfer of design insight.

The death of a program happens when the programmer team possessing its theory is dissolved.

Peter Naur, defining program death by loss of the theory-holders.

program revival, that is reestablishing the theory of a program merely from the documentation, is strictly impossible.

Peter Naur, rejecting reconstruction from text alone.