Programming as Theory Building: A Lasting Perspective in Software Development
In 1985, computer science pioneer Peter Naur introduced a foundational concept in his essay, “Programming as Theory Building.” Naur posited that programming is fundamentally about developing a theory – a deep understanding not only of the problem being addressed but also of its solution. This perspective offers valuable insights into the challenges of modifying existing systems, the creation of legacy software, and the power of iterative development approaches. The concept is being revisited in the context of modern software development, particularly with the rise of generative AI.
The Core Idea: Programming as Theory
Naur’s central argument is that a program isn’t merely lines of code; it’s a shared mental construct, a “theory” residing in the minds of those who operate on it. The code itself is simply a written representation of this theory, and a potentially incomplete one at that. Losing the individuals who hold this understanding can effectively indicate losing the program, even if the code remains intact. This highlights the importance of knowledge transfer and documentation in software projects.
Implications for Software Development
This “theory building” perspective has significant implications for various aspects of software development:
- Program Life and Modification: Understanding a program as a theory explains why modifying existing systems can be so difficult. Changes require not just altering code, but also updating the underlying mental model of how the system works.
- System Development Methods: Naur’s work supports iterative development methodologies. Each iteration allows programmers to refine and expand their understanding (the “theory”) of the problem and its solution.
- Professional Status of Programmers: The theory emphasizes the importance of programmers as thinkers and problem-solvers, rather than simply code writers.
Relevance in the Age of Generative AI
The principles outlined by Naur are particularly relevant today, as generative AI tools become increasingly prevalent in software development. There’s a growing notion that programming primarily consists of generating code. However, Naur’s work suggests that code generation is only one piece of the puzzle. The true value lies in the ability to build and maintain a robust theoretical understanding of the problem domain and the system’s behavior. Simply generating code without this underlying theory can lead to brittle, difficult-to-maintain software.
Peter Naur and His Contribution
Peter Naur (PDF Programming as Theory Building – Gwern) is widely recognized for his contributions to computer science, most notably as a co-author of the Backus-Naur Form (BNF), a notation for defining the syntax of programming languages (Programming as theory building – ScienceDirect). His 1985 essay, published in Microprocessing and Microprogramming, continues to be a thought-provoking piece for software professionals (PROGRAMMING AS THEORY BUILDING (1985) – naur.com).
Further Discussion
Eberhard Wolff’s videocast, software-architektur.tv, recently discussed Naur’s considerations and their relevance to current challenges in software development, including the impact of generative AI. A live stream discussing these topics took place on February 27, 2026 (software-architektur.tv).
Related reading