Programming as theory building

tags
Software Development

The major part of the work of building software is reaching a shared understanding of how and why the software works and how it relates to its domain. Particularly important are the abilities of making sensible changes and noticing errors.

Notes

p r o g r a m m i n g properly should be regarded as an activity by which the p r o g r a m m e r s f o r m or achieve a certain kind of insight, a theory, of the matters at hand. This suggestion is in contrast to what appears to be a more c o m m o n notion, that p r o g r a m m i n g should be regarded as a production of a program and certain other texts.

NOTER_PAGE: (1 0.5864485981308412 . 0.10833880499015101)

matching some significant part and aspect of aft activity in the real world to the formal symbol manipulation that can be done by a p r o g r a m running on a computer.

NOTER_PAGE: (1 0.5869158878504673 . 0.6684175968483256)

the program text and its documentation has proved insufficient as a carrier of some of the most important design ideas.

NOTER_PAGE: (2 0.14205607476635515 . 0.5561391989494419)

these programmers have been closely concerned with the system as a full time oc- cupation over a period of several years,

NOTER_PAGE: (2 0.3981308411214953 . 0.6795797767564018)

im- portance of the personal advice

NOTER_PAGE: (2 0.41728971962616823 . 0.31057124097176625)

when diagnosing a fault these programmers rely almost exclusively on their ready knowledge of the system and the annotated p r o g r a m text, and are unable to conceive of any kind of additional documentation that would be useful to them.

NOTER_PAGE: (2 0.45093457943925236 . 0.742613263296126)

solutions sug- gested by group B were found by group A to make no use of the facilities that were not only inherent in the structure o f the existing compiler but were discussed at length in its documentation,

NOTER_PAGE: (2 0.5355140186915888 . 0.36441234405778067)

The members of group A were able to spot these cases instantly and could propose sim- ple and effective solutions,

NOTER_PAGE: (2 0.6542056074766356 . 0.19566644780039394)

at least with certain kinds of large programs, the continued adaptation, modification, and correction of errors in them, is essentially dependent on a certain kind o f knowledge possessed by a group of program- mers who are closely and continuously connected with them.

NOTER_PAGE: (2 0.7214953271028037 . 0.5988181221273802)

the program- mers' knowledge properly should be regarded as a theory, in the sense of Ryle [11].

NOTER_PAGE: (3 0.15934579439252336 . 0.33355219960604066)

knows how to do certain things and in addition can support the actual doing with explanations, justifi- cations, and answers to queries,

NOTER_PAGE: (3 0.23130841121495327 . 0.06500328299409061)

must have an understanding of the manner in which the central laws apply to certain aspects of reality,

NOTER_PAGE: (3 0.43785046728971966 . 0.5462902166776099)

A person having Newton's theory of mechanics must thus under- stand how it applies to the motions of pendula and the planets, and must be able to recognize similar p h e n o m e n a in the world, so as to be able to employ the mathematically ~xpressed rules of the theory properly.

NOTER_PAGE: (3 0.48785046728971965 . 0.5718975705843728)

the intelligent perfor- mance is characterized in part by the person's do- ing them well, according to certain criteria, but fur- ther displays the person's ability to apply the criteria so as to detect and correct lapses, to learn f r o m the examples of others, and so forth.

NOTER_PAGE: (3 0.5200934579439253 . 0.30663164806303345)

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.

NOTER_PAGE: (3 0.6084112149532711 . 0.5357846355876559)

reminds of Cognition in the Wild on calculators: doing the arithmetic isn't the interesting part, it's knowing what the numbers mean and thus where to plug them in1

What characterizes intellectual activity, over and beyond activity that is merely intelligent, is the person's building and having a theory,

NOTER_PAGE: (3 0.7925233644859814 . 0.0958634274458306)

can explain how the solution relates to the af- fairs of the world

NOTER_PAGE: (4 0.3144859813084112 . 0.11818778726198292)

insight into programming suitable for sup- porting a sound understanding of program modifi- cations.

NOTER_PAGE: (4 0.5869158878504673 . 0.5627051871306631)

the decision that a part of the world is relevant can only be made by someone who understands the whole world. This understanding must be contributed by the programmer.

NOTER_PAGE: (4 0.5883177570093459 . 0.1562705187130663)

humans can solve the Frame Problem

able to support the ac- tual program text with a justification of some sort.

NOTER_PAGE: (4 0.6883177570093458 . 0.2928430728824688)

the choice of the principles and rules, and the decision that they are relevant to the situation at hand, again must in the final analysis remain a matter of the p r o g r a m m e r ' s direct know- ledge.

NOTER_PAGE: (4 0.8252336448598131 . 0.11030860144451739)

For many kinds of such construc- tions, such as cars, or television receivers, modifi- cations are entirely out of the question, in practice.

NOTER_PAGE: (5 0.15934579439252336 . 0.1923834537097833)

the kind of simi- larity that has to be recognized is accessible to the human beings who possess the theory of the pro- gram, although entirely outside the reach of what can be determined by rules, since even the criteria on which to judge it cannot be formulated.

NOTER_PAGE: (5 0.31401869158878504 . 0.7925147734734077)

must clearly be assumed that the dominating cost is one of text manipula- tion.

NOTER_PAGE: (5 0.36682242990654207 . 0.08929743926460931)

On the Theory Building View this whole argument is false. This view gives no support to an expectation that program modifi- cations at low cost are generally possible.

NOTER_PAGE: (5 0.4177570093457944 . 0.2757715036112935)

flexibility can in general only be achieved at a substantial cost.

NOTER_PAGE: (5 0.6714953271028038 . 0.08995403808273145)

Capability vs Tractability

built-in program flexibility is no answer to the general demand for adapting programs to the changing circumstances of the world.

NOTER_PAGE: (5 0.8074766355140187 . 0.10177281680892973)

it is insuffi- cient that he or she has the opportunity to become familiar with the p r o g r a m text and other documen- tation. What is required is that the new program- mer has the opportunity to work in close contact with the programmers who already possess the theory,

NOTER_PAGE: (6 0.10794392523364486 . 0.5554826001313197)

reminds of Ingold on maps: “the meanings of songs remain obscure to those who do not already know the country

For a program to retain its quality it is m a n d a t o r y that each modification is firmly grounded in the theory of it.

NOTER_PAGE: (6 0.2088785046728972 . 0.06959947472094549)

the knowledge of how to do certain things dominates over the knowledge that certain things are the case,

NOTER_PAGE: (6 0.36542056074766355 . 0.567301378857518)

A main claim of the Theory Building View of pro- gramming is that an essential part of any program, the theory of it, is something that could not con- ceivably be expressed, but is inextricably bound to h u m a n beings.

NOTER_PAGE: (6 0.44906542056074766 . 0.06762967826657912)

re- establishing the theory of a program merely from the documentation, is strictly impossible.

NOTER_PAGE: (6 0.5714953271028037 . 0.8345370978332238)

The death of a program happens when the p r o g r a m m e r team possessing its theory is dissolved.

NOTER_PAGE: (6 0.705607476635514 . 0.36441234405778067)

death becomes visible when demands for modifications of the program cannot be intelligent- ly answered.

NOTER_PAGE: (6 0.7920560747663552 . 0.13919894944189098)

the Theory Building View suggests, the existing program text should be discarded and the new-formed program- mer team should be given the opportunity to solve the given problem afresh.

NOTER_PAGE: (6 0.8420560747663551 . 0.6973079448456992)

building a theory to fit and sup- port an existing program text is a difficult, frustrat- ing, and time consuming activity.

NOTER_PAGE: (7 0.14205607476635515 . 0.21208141825344712)

on the Theory Building View, for the primary activity of the programming there can be no right method.

NOTER_PAGE: (7 0.24485981308411217 . 0.6526592252133946)

methodi- cally satisfactory study of the efficacy of pro- gramming methods so far never seems to have been made.

NOTER_PAGE: (7 0.8761682242990655 . 0.8489822718319107)

the notion of the pro- g r a m m e r as an easily replaceable component in the program production activity has to be abandoned.

NOTER_PAGE: (8 0.8588785046728973 . 0.7301378857518056)

must be given a permanent posi- tion, of a status similar to that of other profes- sionals, such as engineers and lawyers,

NOTER_PAGE: (9 0.14345794392523364 . 0.2186474064346684)

corresponding reorientation of the p r o g r a m m e r education. While skills such as the mastery of notations, data representations, and data processes, remain important, the primary em- phasis would have to turn in the direction of fur- thering the understanding and talent for theory formation. To what extent this can be taught at all must remain an open question.

NOTER_PAGE: (9 0.2635514018691589 . 0.19960604070912671)

Footnotes:

1

Edwin Hutchins, Cognition in the Wild (Cambridge, Massachusetts: MIT Press, 1996), 149.