In Programming as theory building, Peter Naur introduces what he calls “Ryle’s notion of theory” and attempts to build a notion of programming on top of it. Below I claim that he confounded what Ryle was saying, and as consequence his paper is more convoluted than it should. And here is a stroked-through version of it that I hope makes it easier to follow.
The first sign is his stating that the concept of theory as characterised by Ryle “appears as an example of what Karl Popper calls unembodied World 3 objects and thus has a defensible philosophical standing”, a very odd thing to say. To begin with because Ryle’s idea has a “defensible philosophical standing” due to the mere fact of him being a philosopher doing philosophy. But more importantly, because while it is true that theorising was for Ryle an activity embedded in culture, just as Popper saw it, the latter stablished that three Worlds—material (1), mental (2), and cultural (3)—exist and interact. On the contrary, the whole agenda of The concept of mind (the only work by Ryle quoted by Naur, and the only one I’ve read) is to reject that something like the mind exists separated from the material, or in other words, that we are ghosts in a machine.
To do so he attempts “not to increase what we know about minds, but to rectify the logical geography of the knowledge which we already possess”. For example, it’s common to conflate intelligence and intellect, which for Ryle are clearly different:
When we speak of the intellect or, better, of the intellectual powers and performances of persons, we are referring primarily to that special class of operations which constitute theorising. The goal of these operations is the knowledge of true propositions or facts. Mathematics and the established natural sciences are the model accomplishments of human intellects.
[…] there are many activities which directly display qualities of mind, yet are neither themselves intellectual operations nor yet effects of intellectual operations. Intelligent practice is not a step-child of theory. On the contrary theorising is one practice amongst others and is itself intelligently or stupidly conducted.
Yet Naur conflated both by asserting that theories can’t be reduced to rules and criteria:
The dependence of a theory on a grasp of certain kinds of similarity between situations and events of the real world gives the reason why the knowledge held by someone who has the theory could not, in principle, be expressed in terms of rules. In fact, the similarities in question are not, and cannot be, expressed in terms of criteria, no more than the similarities of many other kinds of objects, such as human faces, tunes, or tastes of wine, can be thus expressed.
Even when The concept of mind makes clear that what can’t be reduced in such a way is intelligence:
The well-regulated clock keeps good time and the well-drilled circus seal performs its tricks flawlessly, yet we do not call them ‘intelligent’. We reserve this title for the persons responsible for their performances. To be intelligent is not merely to satisfy criteria, but to apply them; to regulate one’s actions and not merely to be well-regulated. A person’s performance is described as careful or skilful, if in his operations he is ready to detect and correct lapses, to repeat and improve upon successes, to profit from the examples of others and so forth. He applies criteria in performing critically, that is, in trying to get things right.
This point is commonly expressed in the vernacular by saying that an action exhibits intelligence, if, and only if, the agent is thinking what he is doing while he is doing it, and thinking what he is doing in such a manner that he would not do the action so well if he were not thinking what he is doing.
Reached this point is fair to wonder if having gotten the concepts mixed up, can Naur still claim that programming is theory building. I argue that not only was Naur onto something, but that Ryle’s makes the case better, as for him a thinker:
is like the farmer, whose path is still sufficiently rough to require him to tread up and down it somewhat heavy-footedly, in order to smooth out some remaining inequalities of the surface. As the farmer is both half-sauntering and still preparing the ground for more effortless sauntering, so the thinker is both using his near-mastery of his theory and still schooling himself to master it perfectly. Telling himself his theory is still somewhat toilsome and one of the objects of this toil is to prepare himself for telling it without toil.
He could also have written that a thinker is like the programmer, whose program is still sufficiently rough to require them to modify it in order to smooth out some remaining defects of its functionality. Programming is certainly theory building, even if we get paid for the program and not the theory, which by the way is:
the results of any kind of systematic inquiry, whether or not these results make up a deductive system. An historian’s account of the course of a battle is his theory.
Yet Naur was only concerned with theory building because of program modifications, which was shortsighted on his part. There’s a whole class of software that has been written and rewritten so many times already, that starting from scratch require no theory building because we already have more than one. New and better theories may arise, of course, but we know pretty well how to build compilers, 3d engines, and pomodoros.
There’s one remaining sign of Naur’s confusion that has to do with the process to acquire a theory. He claims that:
A very important consequence of the Theory Building View is that program revival, that is re-establishing the theory of a program merely from the documentation, is strictly impossible.
Anyone who has switched jobs and confronted a new system knows that it’s better when you have colleagues around to help you to get acquainted with it by, as they have the theory, guiding and answering questions. But it doesn’t follow from it that deciphering systems is impossible, especially when well written and documented. Some kind of contracting wouldn’t be possible otherwise. It may be difficult and slow and hence costly, as Naur feared, but impossible is a bit far fetched, and it doesn’t come from The concept of mind at all, which states that:
The results of research can be delivered in prose, but researching does not generally consist only in operating with pens, but also in operating with microscopes and telescopes, balances and galvanometers, log-lines and litmus-papers.
Research can be delivered in prose. You can build a theory of something by programming, and still deliver it in prose. Our prose is the code.
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.