My conversation with Michael A. Jackson just appeared, entitled: Formalism & Intuition in Software Development
From the preface:
Software technology can be viewed through very different lenses. The words `computer program', for instance, have acquired at least four different meanings during the course of history. A computer program can refer to:
- a technological object,
- a mathematical object of finite capacity,
- a mathematical object of infinite size, or
- a model of the real world, which is not a logico-mathematical construction.
Proponents of the fourth viewpoint oppose a rational metaphysical view to our digital world. They state that not every ‘computer program’ can be understood by resorting solely to logic and strict rules. James Moor, for instance, wrote in 1978 that computer scientists have an inclination to slide, in their discourse, between programs, models, and theories as if there was no distinction between them and the philosopher Hubert Dreyfus scrutinized the entire field of Artificial Intelligence in his 1972 book What Computers Can’t Do. More names in this regard are James Fetzer, Peter Naur and Brian Cantwell Smith.
Michael A. Jackson’s views align well with those of the aforementioned actors. During the 1960s and 1970s, Jackson came to view a data processing system as a simulation of the real world and in subsequent decades he pondered and published about the difference between the little, ‘well formalizable’, math problems of Edsger Dijkstra and cyber-physical systems, which have requirements that are ``possibly completely infeasible to formalize.'' In the conversation that follows, Jackson describes the 1970s as a decade that gave way to formal mathematical concerns, leading to a widening split between academia and industry. The role of mathematics in software engineering, Jackson says today, should be ``as the servant, rather than queen, of the sciences.''
It is in the field of data processing that Jackson began his computing career, encountering a computer for the first time in 1961. After starting his company Michael Jackson Systems Ltd. in 1971, he developed the Jackson structured programming design method and later elaborated that into Jackson system development (JSD). During these years, he began to realize that different software development problems demand different methodologies. His research papers of the 1980s and onwards reveal a deep fascination for the fundamental question: What is software engineering? In the present booklet Jackson also repeatedly reflects on the constituents of software development; he compares and contrasts the writings of several contemporaries, including Ole-Johan Dahl, Edsger Dijkstra, Barry Dwyer, Tony Hoare, Donald Knuth, Pierre-Arnoul de Marneffe, Peter Naur, Brian Randell, Christopher Strachey, David Parnas, and Pamela Zave. Some of the many interrelated topics that come to the fore are software malleability, program transformation systems, and the history of automobile engineering.
The present booklet is the result of two ‘oral history’ interviews with Jackson. The first was conducted by Bas van Vlijmen and myself on 8 March 2013 in Amsterdam. The second interview was held on 22 July 2013 in Jackson’s house in London, where he and I discussed the past for an entire day. I transcribed the interviews and Jackson re-wrote and refined several parts of the transcript. The polished and insightful text that follows is the product of an authentic software scholar who, as he told me when I left his house, ``feels so lucky to have experienced the beginnings of our digital world.'' The history of computing is very fortunate to have him share his reflections and insights with us here.
End of preface from Formalism & Intuition in Software Development
I thank Bas van Vlijmen for contributing to this conversation with Michael A. Jackson.