Book

A Discipline of Programming

by Edsger W. Dijkstra

Summary

Edsger W. Dijkstra’s "A Discipline of Programming" argues that programming should be treated as a mathematical discipline, emphasizing formal verification and provable correctness. The book introduces the concept of "executional abstraction" to manage complexity by separating program behavior from its implementation. Dijkstra details how programming languages, states, and semantics can be formally characterized to ensure the "properly terminating" design of algorithms.

The work presents rigorous methods for developing and verifying programs, illustrating them with examples like Euclid's algorithm and the linear search theorem. Readers will learn to analyze programs through formal treatment and understand concepts like "states and their characterization" and the "semantic characterization of a programming language," fostering a disciplined approach to software construction.

Key concepts

  • Executional abstractionManaging complexity by separating program behavior from its implementation details.
  • States and their characterizationFormal methods for describing and analyzing the possible conditions a program can be in.
  • Semantic characterization of a programming languageDefining the meaning and behavior of a programming language in a formal, unambiguous way.
  • Properly terminatingDesigning programs that are guaranteed to finish their execution.
  • Linear search theoremA formal proof demonstrating the correctness of a linear search algorithm.

From the book

Description: Executional abstraction; The role of programming languages; States and their characterization; The characterization of semantics; The semantic characterization of a programming language; Two theorems; On the design of properly terminating; Euclid's algorithm revisited; The formal treatment of some small examples; The linear search theorem; The problem of the next permutation.
Snippet: Executional abstraction; The role of programming languages; States and their characterization; The characterization of semantics; The semantic characterization of a programming language; Two theorems; On the design of properly terminating; ...

Popular questions readers ask