What is a computer program? This seemingly simple question, on a notion which lies at the heart of computer science, has no simple answer today, neither in academia nor in industry. The responses one gives to it affect very real problems: Who is responsible if a given piece of software fails; whether copyright or patent law applies to “programs”, or whether a “program” is correct or not? So far, there are no clear answers to any of these concrete problems and so the need for more foundational research is not just a theoretical one.
A particular challenge of the notion of program today is the diversity of existing approaches and answers. Is a program a piece of symbolic text which requires logico-mathematical analysis? Or is it rather a configuration of physical entities, like electrons and magnetic charges, that reside in the digital circuits of a computer? What is the difference, if any, between algorithm and program? Is a program an object? If yes, is it a technological (and concrete) object, or, as many people describe it, a “liminal” one, bridging the formal and the abstract? How can the relation between these two interpretations be explained? Is the meaning of a program its execution (cf. operational semantics) or can it be captured adequately enough by its input/output behavior (cf. denotational semantics)? Is it possible to verify the correctness of a program and, if yes, what does it really mean to do so? Can we talk about programs without code? What is the difference between software and programs? And so on. This variety of questions indicates that there is a broad range of positions to be considered and no easy way to see the wood for the trees.
The diversity of approaches to the notion of program reflects a deeper characteristic, namely the fact that “program” has modalities. As a symbolic text, it has a mathematical and linguistic modality – a formal modality for short; as something that is stored and executed by a machine, it has a physical modality; and as something that is made and used by people it has a socio-technical modality. As such, our notion of program is rooted in these three modalities and any understanding of “program” needs to incorporate each of them and account for their relations. From this
hypothesis, this project aims at developing the first coherent analysis and pluralistic understanding of “program” and its implications to theory and practice.
More details about the project can be found here.