Explanation and Motivation

We continue our reading of Literate Programming, by Donald Knuth.

In this session, we completed up to the end of section 5. Knuth has by now given the ‘plan’ of his program to print the first m prime numbers, and has commenced his explanation of the program’s ‘output phase’.

Our discussion focussed on the link between ‘motivation’ and explanation in Knuth’s vision for WEB. Knuth essentially argues that the prose of a WEB program ought to ‘motivate’ the programming decisions expressed in the code. His model for this process is the essay, which he perceives as a literary form in which the writer records their own thought-process. The source of a WEB program thus ought to reflect the programmer’s own creative process.

This is a powerful model of composition. From a literary studies perspective, it recalls the approach of the late Helen Vendler, who famously interpreted poems as records of their own creative process.

But many in the group objected to aspects of Knuth’s argument.

In the first case, does an essay ever accurately reflect the writer’s thought-process? Is there not an element of revision, polishing, and rhetoric in any essay? This doesn’t invalidate Knuth’s point, but thus far he does not seem to recognise the fictionality of the creative process. His WEB code is a story about how he wrote the program. What is the relationship between this story and the reality? Is there any reality that is not the story?

In the second case, his particular pattern of explanation didn’t work for everyone. In Knuth’s view, each part of the code should be preceded by the prose that ‘motivates’ the decision. Some in the group felt that it would be better to present the code, and follow it with a commentary, at least in some cases. But this would undermine the fiction that that code is emerging from a reasoning process that is reflected in the source.

Of course, we in the group bring our own assumptions and biases to the discussion. Knuth’s idea of the ‘essay’ may be perfectly valid, although it conflicts with ideas about literary composition that are popular in English departments. In particular, we dicussed the familiar nostrum of the ‘intentional fallcy’. Knuth makes little distinction between the programmer’s intention (or motivation) and the ‘meaning’ of the program. In Literature departments, we habitually distinguish the intention and the meaning: what the writer intended to say has really nothing to do with what they actually manage to say. As one member of the group observed, this notion of the ‘intentional fallacy’ reflects certain limitations in literary scholarship, especially the dominance of the nineteenth-century novel as a model for literature in general. Perhaps Knuth is right to tightly couple meaning and intention in the context of computer programming. The ‘author’ of a program is typically many people in conversation, unlike the distant ‘author’ of a triple-decker novel.

Against against intention: Amerikkkka, by Peli Grietzer.

An entire book written in WEB (or rather CWEB): MMIXware: A RISC Computer for the Third Millenium