Abstract
A brief history of the <u>goto</u> controversy (retention or deletion of the <u>goto</u> statement) is presented. After considering some of the theoretical and practical aspects of the problem, a summary of arguments both for and against the <u>goto</u> is given.
- Al. Ashcroft, Edward and Manna, Zohar. "The translation of 'goto' programs to 'while' programs".
Proc. IFIP Congress 71 , Ljubljana, Aug. 1971.Google Scholar - B1. de Bakker, J. W. "Semantics of programming languages".
Advances in Information Systems Science 2 (Ed. Tou, J. T.) Plenum Press, New York, 1969.Google Scholar - B2. Barron, D. W.
Recursive Techniques in Programming . American Elsevier, New York, 1968.Google Scholar - B3. Barron, D. W. and Strachey, C. "Programming".
Advances in Programming and Non-Numerical Computation . (Ed. Fox, L.), Pergamon Press, New York, 1966.Google Scholar - B4. Berry, D. M. "Introduction to Oregano".
Proc. Symposium on Data Structures in Programming Languages , SIGPLAN Notices 6, 2 (Feb. 1971).Google Scholar - B5. Black, Fischer. "Styles of programming in LISP"
The Programming Language LISP: Its Operation and Applications (Ed. Berkeley and Bobrow), Information International, Cambridge, Mass. 1964.Google Scholar - B6. Bohm, Corrado and Jacopini, Giuseppe. "Flow diagrams, Turing machines and languages with only two formation rules".
CACM 9 (May 1966). Google ScholarDigital Library - B7. Burge, W. H. "The evaluation, classification and interpretation of expressions".
Proc. ACM 19th National Conf . 1964. Google ScholarDigital Library - B8. Burge, W. H. "Notes on a model for programming systems: Part I". Report RC 2188 (Aug. 1968). IBM Research Division, Yorktown Heights, N. Y.Google Scholar
- B9. Burstall, R. M. "Writing search algorithms in functional form"
Machine Intelligence 3 (Ed. Michie, D.) Edinburgh Univ. Press, Edinburgh, 1968.Google Scholar - B10. Burstall, R. M. "Proving properties of programs by structural induction",
Computer Journal 12, 1 (Feb. 1969).Google ScholarCross Ref - B11. Burstall, R. M. and Popplestone, R. J. "POP-2 refercnce manual"
Machine Intelligence 2 (Ed. Dale & Michie), American Elsevier, New York 1968.Google Scholar - B12. Burstall, R. M. and Landin, P. J. "Programs and their proofs: an algebraic approach",
Machine Intelligence 4 (Eds. Meltzer & Michie) Edinburgh Univ. Press, Edinburgh, 1969.Google Scholar - C1. Caracciolo di Forino, A., Spanedda, L. and Wolkenstein, N. "PANON-1B: A programming language for symbol manipulation ",
Calcolo , Vol. 3, 1966.Google Scholar - C2. Caracciolo di Forino, A. "Generalized Markov algorithms and automata",
Automata Theory (Ed. Caianiello, E. R.), Academic Press, New York, 1966.Google Scholar - C3. Christenson, Carlos, "Examples of symbol manipulation in the AMBIT programming language".
Proc. ACM 20th National Conf ., Cleveland, Ohio, Aug. 1965. Google ScholarDigital Library - C4. Church, A., "The calculi of lambda-conversion",
Annals of Math. Studies No. 6, Princeton Univ. Press, Princeton, New Jersey (1951). Google ScholarDigital Library - C5. Cohen, K. and Wegstein, J. H., "AXLE, an axiomatic language for string transformations",
CACM 8, (1965), 657--661. Google ScholarDigital Library - C6. Cooper, D. C. "On the equivalence of certain computations"
Computer Journal 9 (1966), 45--52.Google ScholarCross Ref - C7. Cooper, D. C. "Reduction of programs to a standard form by graph transformation",
Theory of Graphs ,International Symposium , Rome 1966 (Ed. Rosentiehl, P.), Gordon and Breach, New York, 1967.Google Scholar - C8. Cooper, D. C. "Bohm and Jacopini's reduction of flow charts". Letter to the Editor,
CACM 10 (Aug. 1967). Google ScholarDigital Library - C9. Cooper, D. C. "Some transformations and standard forms of graphs, with applications to computer programs",
Machine Intelligence 2 (Ed. Dale & Michie), American Elsevier, New York, 1968.Google Scholar - C10. Coulouris, G. F. "Principles for implementing useful subsets of advanced programming languages",
Machine Intelligence 1 (Ed. Collins & Michie), Oliver & Boyd, Edinburgh, 1967.Google Scholar - C11. Curry, H. and Feys, R.
Combinatory Logic , Vol. 1, North-Holland, Amsterdam, 1958.Google Scholar - D1. Dijkstra, E. W., "An attempt to modify the constituent concepts of serial program execution',
Proc. ICC Symposium on Symbolic Languages in Data Processing , Gordon & Breach, New York, 1962.Google Scholar - D2. Dijkstra, E. W., "Programming considered as a human activity",
Proceedings IFIP Congress 65 , 65, edited by W. A. Kalenich, Spartan Books, Washington, D. C., 1965.Google Scholar - D3. Dijkstra, E. W. "Recursive programming",
Programming Systems and Languages (Ed. Rosen, S.), McGraw-Hill, New York 1967.Google Scholar - D4. Dijkstra, E. W. "Go to statement considered harmful", Letter to the Editor,
CACM 11 (March 1968). Google ScholarDigital Library - D5. Dijkstra, E. W. "A constructive approach to the problem of program correctness",
BIT 8 (1968).Google Scholar - D6. Dijkstra, E. W. "Notes on structured programming", EWD 249, Technical University, Eindhoven, Netherlands, 1969.Google Scholar
- El. Ershov, A. P. "Theory of program schemata",
Proc. IFIP Congress 71 , Ljubljana, Aug. 1971.Google Scholar - F1. Farber, D. J., Griswold, R. E. and Polonsky, I. P. "SNOBOL, a string manipulation language",
JACM 11 (January 1964). Google ScholarDigital Library - F2. Fisher, David A. "Control structures for programming languages", PhD. Thesis, Carnegie-Mellon Univ., Pittsburgh, Pa., May 1970. Google ScholarDigital Library
- F3. Floyd, R. W. "A descriptive language for symbol manipulation",
JACM 8, 4 (1961). Google ScholarDigital Library - F4. Floyd, R. W. "Nondeterministic algorithms",
JACM 14 (Oct. 1967). Google ScholarDigital Library - F5. Floyd, R. W. "Assigning meanings to programs",
Proc. Symp. Applied Math. , AMS Vol. 19, 1967.Google Scholar - G1. Galler, B. A. and Fischer, M. J. "The iteration element",
CACM 8 (June 1965). Google ScholarDigital Library - G2. Galler, B. A. and Perlis, A. J.
A View of Programming Languages , Addison-Wesley, Reading, Mass., 1970. Google ScholarDigital Library - G3. Gilmore, P. C. "An abstract computer with LISP-like machine language without a label operator",
Computer Programming and Formal Systems (Eds. Braffort & Hirschberg), North-Holland, Amsterdam, 1963.Google Scholar - G4. Goodstein, R. L.
Recursive Analysis , North-Holland, Amsterdam, 1961.Google Scholar - G5. Griswold, R. E. Poage, J. F. and Polonsky, I. P.
The SNOBOL4 Programming Language , Prentice-Hall, Englewood Cliffs, N. J. 1968. Google ScholarDigital Library - G6. Guzman, Adolfo and McIntosh, H. "CONVERT",
CACM 9 (Aug. 1966). Google ScholarDigital Library - H1. Hopkins, Martin, "A case for the goto",
Proceedings ACM '72 , Boston, August 1972. Google ScholarDigital Library - I1. Ianov, Y. I. "On the equivalence and transformation of program schemes",
CACM 1 (1958), 8--12. Google ScholarDigital Library - I2. Ianov, I. "The logical schemes of algorithms",
Problems of Cybernetics I (English translation) Pergamon Press, Oxford 1960, 82--140.Google Scholar - J1. Johansen, Peter, "Non-deterministic programming",
BIT 7 (1967), 289--304.Google ScholarCross Ref - J2. Johnston, John B. "The contour model of block structured processes",
Proc. Symposium on Data Structures in Programming Languages , SIGPLAN Notices 6, 2 (Feb. 1971). Google ScholarDigital Library - K1. Kleene, S. C.
Introduction to Metamathematics , Van Nostrand, New York, 1952.Google Scholar - K2. Knuth, D. E. and Floyd, R. W. "Notes on avoiding 'goto' statements",
Information Processing Letters 1, North-Holland, Amsterdam (1971), 23--31.Google Scholar - L1. Landin, P. J. "The mechanical evaluation of expressions",
Computer Journal 6, 4 (1964).Google ScholarCross Ref - L2. Landin, P. J. "A correspondence between ALGOL 60 and Church's lambda-notation",
CACM 8, 2 and 3 (1965). Google ScholarDigital Library - L3. Landin, P. J. "The next 700 programming languages",
CACM 9 (March 1966). Google ScholarDigital Library - L4. Leavenworth, B. M. "The definition of control structures in MCG360". Report RC2376 (Feb. 1969). IBM Research Division, Yorktown Heights, N. Y.Google Scholar
- L5. Ledgard, H. F. "Ten mini-languages: A study of topical issues in programming languages",
ACM Computing Surveys , 3, 3 (Sept. 1971). Google ScholarDigital Library - L6. Lucas, P. et al "Method and notation for the formal definition of programming languages", Tech. Report TR 25.087, IBM Laboratory, Vienna, 1968.Google Scholar
- L7. Luckham, D. C., Park, D. M. R. and Paterson, M. S., "On formalized computer programs",
Journal of Computer and System Sciences , June 1970.Google ScholarDigital Library - M1. Markov, A. A. "The theory of algorithms" (Russian Translation), U. S. Dept. of Commerce, Office of Technical Services No. OTS 60-51085.Google Scholar
- M2. McCarthy, J. et al,
LISP 1.5 Programmers Manual , The M.I.T. Press, Cambridge, Mass. 1962. Google ScholarDigital Library - M3. McCarthy, J. "Towards a mathematical science of computation",
Proc. IFIP Congress , Munich 1962, North-Holland, Amsterdam.Google Scholar - M4. McCarthy, J. "Basis for a mathematical theory of computation",
Computer Programming and Formal Systems (Eds. Braffort & Hirschberg), North-Holland, Amsterdam, 1963.Google Scholar - M5. Mills H. "Top down programming in large systems",
Debugging Techniques in Large Systems (Ed. Rustin, Randall), Prentice-Hall, Englewood Cliffs, N. J. 1971.Google Scholar - M6. Minsky, M. L.
Computation: Finite and Infinite Machines , Prentice-Hall, Englewood Cliffs, N. J. 1967. Google ScholarDigital Library - M7. Mooers. C. N. and Deutsch, L. P. "TRAC: A text handling language"
Proc. ACM 20th National Conf. Cleveland, Ohio (Aug. 1965).Google Scholar - N1. Naur, P. "Proof of algorithms by general snapshots",
BIT 6, 1966.Google Scholar - N2. Naur, P. "Programming by action clusters",
BIT 9, 1969.Google Scholar - P1. Paterson, M. S. "Program schemata",
Machine Intelligence 3 (Ed. Michie. D.), Edinburgh Univ. Press, Edinburgh, 1968.Google Scholar - P2. Paterson, M. S. and Hewitt, C. E. "Comparative schematology",
Proj. MAC Conference on Concurrent Systems and Parallel Computation (June 1970), ACM, New York, 1970.Google Scholar - P3. Perlis, A. J., Lecture Notes on Seminar on Extensible Languages. Carnegie-Mellon University, Fall, 1968.Google Scholar
- P4. Peter, Rozsa.
Recursive Functions , Academic Press, New York, 1967.Google Scholar - P5. Post, E. I. "Finite combinatory processes - formulation I",
Journal of Symbolic Logic , Vol. 1, (1936).Google ScholarCross Ref - R1. Reynolds, J. C. "GEDANKEN: A simple typeless language based on the principle of completeness and the reference concept",
CACM 13 (May 1970). Google ScholarDigital Library - R2. Rice, H. G. "Recursion and iteration',
CACM 8 (Feb. 1965). Google ScholarDigital Library - R3. Rice, J. R. "The
goto statement reconsidered", Letter to the Editor,CACM 11 (1968) 538. Google ScholarDigital Library - R3. Rutledge, J. D. "On Ianov's program schemata",
JACM 11 (1964), 1--9. Google ScholarDigital Library - S1. Schorre, D. V. "Improved organization for procedural languages", Technical Memo, August 1966, System Development Corp., Santa Monica, Calif.Google Scholar
- S2. Shepherdson, J. C. and Sturgis, H. E. "Computability of recursive functions",
JACM 10, 2 (1963). Google ScholarDigital Library - S3. Stark. R. "A language for algorithms",
Computer Journal Vol. 14, No. 1 (Feb. 1971).Google ScholarCross Ref - S4. Strachey, C. "A general purpose macrogenerator",
Computer Journal , Vol. 8, (Oct. 1965).Google ScholarCross Ref - S5. Strachey, C. "Fundamental concepts in programmings", NATO Conf., Copenhagen 1967.Google Scholar
- S6. Strong, H. R., Jr. "Translating recursion equations into flow charts",
Journal of Computer and System Sciences , 5, 3 (June 1971).Google ScholarDigital Library - T1. Turing, A. M. "On computable numbers with an application to the Entscheidungsproblem",
Proc. London Math. Soc. , ser. 2, Vol. 42 (1936--1937).Google Scholar - V1. Van Wijngaarden, A. "Recursive definition of syntax and semantics",
Formal Language Description Languages for Computer Programming , edited by T. B. Steel, Jr., North-Holland, Amsterdam, 1966.Google Scholar - W1. Wang, H. "A variant to Turing's theory of computing machines,
JACM 4, 1 (1957). Google ScholarDigital Library - W2. Wegbreit, B. "Studies in extensible programming languages", ESD-TR-70-297, Directorate of Systems Design & Development, L. G. Hanscom Field, Bedford, Mass., May 1970.Google Scholar
- W3. Wirth, Niklaus and Hoare, C. A. R. "A contribution to the development of ALGOL",
CACM 9 (June 1966). Google ScholarDigital Library - W4. Wirth, N. "On certain basic concepts of programming languages", Computer Science Technical Report No. CS65, Stanford University, 1967. Google ScholarDigital Library
- W5. Wirth, N. "Program development by stepwise refinement",
CACM 14 (April 1971). Google ScholarDigital Library - W6. Wozencraft, J. M. and Evans, A. Jr., "Notes on programming linguistics", Dept. of Electrical Engineering, MIT, Cambridge, Mass., Feb. 1971.Google Scholar
- W7. Wulf, W. A. "Programming without the goto",
Proc. IFIP Congress 71 , Ljubljana, Aug. 1971.Google Scholar - W8. Wulf, W. A. Russell, D. B. and Habermann, A. N. "BLISS: a language for systems programming,
CACM 14 (Dec. 1971). Google ScholarDigital Library - W9. Wulf, W. A. "A case against the goto".
Proceedings ACM '72 , Boston, August 1972. Google ScholarDigital Library - Y1. Yngve, V. H.
Computer Programming with COMITII , The M.I.T. Press, Cambridge, Mass. 1972.Google Scholar
Recommendations
A case against the GOTO
ACM '72: Proceedings of the ACM annual conference - Volume 2It has been proposed, by E. W. Dijkstra and others, that the goto statement in programming language is a principal culprit in programs which are difficult to understand, modify, and debug. More correctly, the argument is that it is possible to use the ...
Programming with(out) the GOTO
ACM '72: Proceedings of the ACM annual conference - Volume 2A brief history of the goto controversy (retention or deletion of the goto statement) is presented. After considering some of the theoretical and practical aspects of the problem, a summary of arguments both for and against the goto is given.
A case against the GOTO
Special issue on control structures in programming languagesIt has been proposed, by E. W. Dijkstra and others, that the <u>goto</u> statement in programming langauge is a principal culprit in programs which are difficult to understand, modify, and debug. More correctly, the argument is that it is possible to ...
Comments