I encountered another pertinant passage related to programming in Chapter 1 of The Archeology of Knowledge (1969) by Michel Foucault. In this chapter, entitled “The Unities of Discourse,” he sets out to challenge a host of assumptions. These assumptions, or “unities” as he calls them, are deeply ingrained in most projects of critical analysis. One unity he finds particularly pernicious is that of “the book”. On the surface, how could one have issue with something as seemingly concrete as a book? But he starts to unravel the purity of a book, in that a book does not exist in a vacuum; it only makes sense in context with other books, with what we have read before. He says, “The frontiers of a book are never clear-cut: beyond the title, the first lines, and the last full stop, beyond its internal configuration and its autonomous form, it is caught up in a system of references to other books, other texts, other sentences: it is a node within a network.”
It was this sentence that struck me as related to programming. Terms like “configuration,” “network,” and “node” veritably scream out as related to computers. The obvious metaphor of networks and nodes is to actual networks, but I thought of the idea as more related to code. Really, no code exists in isolation. It always pulls in base classes from whatever platform the code is written on, and those base classes have some dependency, etc. All code is “caught up in a system of references” — in .NET, literally caught up in System. And this idea of internal configuration: these are the programming patterns that we claim to implement. But what is the sub-text of a piece of code?