Review: Structured Programming (Dahl, Dijkstra, and Hoare)

Structured Programming Structured Programming, by O.-J. Dahl, E.W. Dijkstra, and C.A.R. Hoare. Academic Press, 1972.

This year (2012) is the 40th anniversary of this text, but it holds up well. It consists of three essays:

  • “Notes on Structured Programming” by E.W. Dijkstra
  • “Notes on Data Structuring” by C.A.R. Hoare
  • “Hierarchical Program Structures” by O.-J. Dahl and C.A.R. Hoare

If you’ve been led to think “Structured Programming = No GOTOs”, the first essay will change your mind. It’s much more a consideration of design in the small than a focus on surface form.

“Data Structuring” considers how to structure types; Pascal’s type structure (remember that?) of records, sets, enumerations etc. clearly embodies some of these ideas. You can see roots of the “object-based” approach (that never seemed to make it to the mainstream in the way object-oriented approaches did).

The final essay describes mechanisms from SIMULA 67, an early (if not the original) object-oriented programming language. You can see the early consideration of objects and coroutines, classes and subclasses.

There’s definitely a “historical” air to these essays, but they hint at a path almost taken. Modern libraries and the modern rush to deliver let us ignore many ideas about software design, but they don’t go away. These articles take a slower, more mathematical path than I’ve seen anybody apply in practice, but it brings clarity of thought about mapping problems and solutions that I’d like to imitate.