Presentation at Warwick DCS Language Club (April 29th 2008)
An orientation on programming
What might we mean by the term behaviour?
- a recognisable succession of state changes / process to which an identity can be ascribed, e.g.
- heapsort, or more generally sorting
- a business process
- routine design
- playing chess
- playing a Beethoven sonata
- going from the university to the city centre
- a state-changing activity that may not be repeatable in an identifiable way, e.g.
- watching live sport
- radical design
- exploratory scientific experiment
- musical improvisation
Issues relating to what we regard as behaviour are:
- behaviour and purpose (do we have a purpose in all state-changing activity?)
- what is the nature of the observation that informs / describes behaviour? (is all observation theory-laden?)
- "understanding backwards" vs "understanding forwards"
- "a behaviour" vs "experience" (note no article, definite or indefinite before 'experience'!)
- behaviours as emergent from experience and/or experience as emergent from behaviours
Thesis: understanding the concept of programmed behaviours means first understanding enacted behaviours (from which programmed behaviours emerge), and this in turn means understanding how states and state-changes are emergent from our 'raw experience'.
Broadly have three viewpoints:
- programmed behaviour: cast in terms of specific observables and interpretations of observables, relating to reliable interactions and laws, circumscribed and explicable, achieving specific overall state transitions (e.g. I-O relations) obliviously, or specific patterns of ongoing state transition automatically with essentially preconceived external interventions.
- enacted behaviour: behaviour that in some essential aspect appears to involve "intelligence" and "free will" on the part of a human agent, where observation and interpretation in a current situation has to be invoked. Relevant issues might include skill, perception, stability and non-singularity of context, and scope for discretionary and unforeseen interaction and interpretation.
- primitive state-changing 'behaviour': state-changing activity that is exploratory in character, may not be reliably re-enacted, is not framed with reference to specific observables or objectives by way of achieving specific states or establishing specific processes, admits re-interpretation on-the-fly even if indeed it is coherent and sufficiently context-independent.
Programmed behaviour is very much what classical computer science has been about. Its specification is what programming language are at some level addressing - but only if the issue of program comprehension is set aside. Lots of themes in the broader field of programming paradigms, software development and AI are concerned with relating / transforming enacted behaviour to programmed behaviour. In object-oriented programming and in software engineering methods we're typically acknowledging the need to make relationships / tranformations of this kind. Agent-oriented modelling and software engineering is closely related to this theme. Conventional use of spreadsheets is an archetypal example of giving support for enacted behaviours that would be difficult to transform into programmed behaviours. Good strategies and techniques for game development struggle with the problem of blending enacted and programmed behaviours. There is a tension between different kinds of notion of comprehension here: on one reading of science comprehension is about having theories and explanations in terms of goals and reasoning, on another about whether an experience is perceived as having authenticity and carries conviction and whether it can be shown to have pragmatic value.
The "thesis" above reflects the Empirical Modelling (EM) stance on computing technology. Its whole stance is contentious to the extent that the idea of "understanding how states and state-changes are emergent from our 'raw experience'" can be deemed meaningful and acceptable. (For instance: Isn't all understanding "backwards understanding"? Isn't all experience amenable to "scientific explanation" and the product of theory? Isn't all experience mediated by language? Isn't every experience of interaction with a computer necessarily explicable in terms of Turing computation? etc etc) A full discussion of such issues is beyond the scope of these notes: for that you might consult William James's writings on psychology and philosophy, or David Gooding's account of how Faraday developed and communicated an understanding of electromagnetism rich enough to (e.g.) build an electric motor without framing any mathematical equations. Notice that the underlying thesis is that an experiential account of knowledge is an essential complement to abstract scientific theory and is vital to its proper interpretation.
EM puts the primary emphasis on the kinds of experience that computing technology offers. What matters first and foremost in that view is what kind of patterns of interaction and interpretation can be reliably supported. It is useful to think here of "the computer as an instrument" but more accurate to think of the broader ways in which "the computer" can be integrated with other technologies to create instruments. The theory of computation, and the technology that efficient algorithms and clear semantic models enable, (potentially) gives peculiar and unprecedented expressive power to such instruments. However, these traditional computer science concerns do not of themselves give an adequate account of the experiences such instruments afford. To address this in concrete terms, it would be natural to focus on the way in which these technologies are engineered, but this does not do justice to the role that is played by human culture, interpretation, skill and imagination in making instruments effective. EM can be seen as aiming at principles and tools that target the activities that are associated with what is classified above as primitive state-changing 'behaviour'. The word 'behaviour' seems premature in this context, as does the concept of a functional goal (cf. Vicenti's notion of 'blind variation' as fundamental to engineering). It is the activities that engineer states, state-changing actions, and the means to observe and interpret these that are of interest. In such activities, the situation necessarily is - or can be contrived to be - complicit.