Solving a problem with the aid of a computer involves the construction and execution of a program described by a linear piece of text. First, the problem-solver (programmer) translates his problem into a procedural solution embodied in a static program text, written in a programming language. Then a computer is caused to perform a dynamic sequence of actions in accordance with the commands in the program text. The reliability of this two-stage problem solution (i.e., the likelihood that the actions performed really provide a solution of the problem) depends on the degree to which the program text mirrors the possible action sequences that it causes, as well as the problem solution that it purports to implement. It is useful to speak of the "conceptual distance" between program text and action sequences or between problem definition and program text. The programmer who wants some measure of confidence in the reliability of his program must bridge both these conceptual distances. It follows that a major goal of programming language design should be to help reduce both these distances.
[1]
William A. Wulf,et al.
A case against the GOTO
,
1972,
ACM '72.
[2]
Tony Hoare,et al.
Notes on Data Structuring
,
1972
.
[3]
Donald E. Knuth,et al.
Structured Programming with go to Statements
,
1974,
CSUR.
[4]
W. T. Hardgrave.
Positional versus keyword parameter communication in programming languages
,
1976,
SIGP.
[5]
William A. Wulf,et al.
BLISS: a language for systems programming
,
1971,
CACM.
[6]
Tony Hoare,et al.
Hierarchical Program Structures
,
1972
.
[7]
Charles T. Zahn,et al.
A control statement for natural top-down structured programming
,
1974,
Symposium on Programming.
[8]
Charles Antony Richard Hoare,et al.
Hints on programming language design.
,
1973
.
[9]
Edsger W. Dijkstra,et al.
Notes on structured programming
,
1970
.
[10]
C. A. R. Hoare,et al.
An Axiomatic Definition of the Programming Language PASCAL
,
1973,
Acta Informatica.