Journal Article10.1145/362929.362947
Letters to the editor: go to statement considered harmful
1K
TL;DR: My considerations are that, although the programmer's activity ends when he has constructed a correct program, the process taking place under control of his program is the true subject matter of his activity, and that his intellectual powers are rather geared to master static relations and his powers to visualize processes evolving in time are relatively poorly developed.
read more
Abstract: For a number of years I have been familiar with the observation that the quality of programmers is a decreasing function of the density of go to statements in the programs they produce. More recently I discovered why the use of the go to statement has such disastrous effects, and I became convinced that the go to statement should be abolished from all "higher level" programming languages (i.e. everything except, perhaps, plain machine Code). At'that time I did not attach too much importance to this discovery ; I now submit my considerations for publication because in very recent discussions in which the subject turned up, I have been urged to do so. My first remark is that, although the programmer's activity ends when he has constructed a correct program, the process taking place under control of his program is the true subject matter of his activity, for it is this process that has to accomplish the desired effect; it is this process that in its dynamic behavior has to satisfy the desired specifications. Yet, once the program has been made, the "making" of the corresponding process is delegated to the machine. My second remark is that our intellectual powers are rather geared to master static relations and that our powers to visualize processes evolving in time are relatively poorly developed. For that reason we should do (as wise programmers aware of our limitations) our utmost to shorten the conceptual gap between the static program and the dynamic process, to make the correspondence between the program (spread out in text space) and the process (spread out in time) as trivial as possible. Let us now consider how we can characterize the progress of a process. (You may think about this question in a very concrete manner: suppose that a process, considered as a time succession of actions, is stopped after an arbitrary action, what data do we have to fix in order that we can redo the process until the very same point?) If the program text is a pure concatenation of, say, assignment statements (for the purpose of this discussion regarded as the descriptions of single actions) it is sufficient to point in the program text to a point between two successive action descriptions. (In the absence of go to statements I can permit myself the syntactic ambiguity in the last three words of the previous sentence: if we parse …
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Fixpoint approach to the theory of computation
Zohar Manna,Jean Vuillemin +1 more
TL;DR: Following the fixpoint theory of Scott, the semantics of computer programs are defined in terms of the least fixpoints of recursive programs, which allows not only the justification of all existing verification techniques, but also their extension to the handling in a uniform manner.
97
No More Gotos: Decompilation Using Pattern-Independent Control-Flow Structuring and Semantics-Preserving Transformations
Khaled Yakdan,Sebastian Eschweiler,Elmar Gerhards-Padilla,Matthew Smith +3 more
- 07 Feb 2015
TL;DR: DREAM is presented, the first decompiler to offer a goto-free output, a novel patternindependent control-flow structuring algorithm that can recover all control constructs in binary programs and produce structured decompiled code without any goto statements.
Abstraction and Verification in Alphard: Introduction to Language and Methodology
William A. Wulf,Ralph L. London,Mary Shaw +2 more
- 14 Jun 1976
TL;DR: This paper attempts to capture the symbiotic influence of these two goals on the design of Alphard by interleaving the language description with the presentation of a proof technique and discussion of programming methodology.
87
Research Commentary---Weighing the Benefits and Costs of Flexibility in Making Software: Toward a Contingency Theory of the Determinants of Development Process Design
Robert D. Austin,Lee Devin +1 more
TL;DR: A basic contingency framework is developed, one that models the benefit/cost economics described in narratives about the transition from craft to industrial production of physical products and shows that there remain many opportunities for information systems research to have a major impact on practice in this area.
86
References
A contribution to the development of ALGOL
Niklaus Wirth,C. A. R. Hoare +1 more
TL;DR: The main changes were: (1) verbal improvements and clarifications, many of which were kindly suggested by recipients of the original draft; (2) additional or altered language features, in particular the replacement of tree structures by records as proposed by the second author.
218
•Book
Flow diagrams, Turing machines and languages with only two formation rules
Corrado Böhm,Giuseppe Jacopini +1 more
- 01 Jan 1979
TL;DR: Bohm and Jacopini as mentioned in this paper showed that any flowchart can be drawn from combinations of standard "structured" flowchart elements; they did not prove that any COBOL program can be written without goto statements.
Flow diagrams, turing machines and languages with only two formation rules
Corrado Böhm,Giuseppe Jacopini +1 more
TL;DR: In the first part of the paper, flow diagrams are introduced to represent inter ah mappings of a set into itself due to a suitable extension of the given set and of the basic mappings defined in it.
Related Papers (5)
Edsger W. Dijkstra
- 01 Jan 2002
O. J. Dahl,Edsger W. Dijkstra,C. A. R. Hoare +2 more
- 01 Jan 1972
Edsger W. Dijkstra
- 01 Jan 1970