Abstract
In this report I shall pursue a very simple idea. Provided that we give an adequate formulation of what we admit as “a single machine malfunctioning”, we can interpret the effort as that of making a program in such a way that under the assumption of at most a single malfunctioning, the machine will never produce a wrong result as if it were the right one. I shall not, however, start my considerations with a very precise definition of the class of malfunctionings I am going to allow a single instance of: the probability that I have designed a tool of which, after much hard labour, we must conclude that it is insufficient for reaching our goal, is then just too high. I shall therefore start at the other end, and investigate the consequences of applying a technique that —with a certain amount of goodwill— can be viewed as “making a program more robust” and afterwards analyse which class of malfunctionings it catches under the assumption of at most a single instance. The more elaborate exercises, I am sorry to announce, will be rather painful ones, because we cannot do them with too simple examples: if the example is very simple —like forming the sum of a hundred stored values— the only way to make the program more robust boils down (in some way or another) to doing the computation twice and I am —obviously!— more interested in what we can achieve without paying that price. (All by itself, this observation is already somewhat alarming: under assumption of a perfect machine, we are used to breaking down the whole computation as a succession of little steps, each of them trivial in itself, but if they can only be made more robust by duplication, our robustness concerns force us to consider larger “units”. This seems a warning that we are tackling a nasty subject!)
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Rights and permissions
Copyright information
© 1982 Springer-Verlag New York Inc.
About this chapter
Cite this chapter
Dijkstra, E.W. (1982). Exercises in Making Programs Robust. In: Selected Writings on Computing: A personal Perspective. Texts and Monographs in Computer Science. Springer, New York, NY. https://doi.org/10.1007/978-1-4612-5695-3_20
Download citation
DOI: https://doi.org/10.1007/978-1-4612-5695-3_20
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4612-5697-7
Online ISBN: 978-1-4612-5695-3
eBook Packages: Springer Book Archive