skip to main content
article
Free Access

Programming with(out) the GOTO

Published:01 November 1972Publication History
Skip Abstract Section

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.

References

  1. Al. Ashcroft, Edward and Manna, Zohar. "The translation of 'goto' programs to 'while' programs". Proc. IFIP Congress 71, Ljubljana, Aug. 1971.Google ScholarGoogle Scholar
  2. 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 ScholarGoogle Scholar
  3. B2. Barron, D. W. Recursive Techniques in Programming. American Elsevier, New York, 1968.Google ScholarGoogle Scholar
  4. B3. Barron, D. W. and Strachey, C. "Programming". Advances in Programming and Non-Numerical Computation. (Ed. Fox, L.), Pergamon Press, New York, 1966.Google ScholarGoogle Scholar
  5. B4. Berry, D. M. "Introduction to Oregano". Proc. Symposium on Data Structures in Programming Languages, SIGPLAN Notices 6, 2 (Feb. 1971).Google ScholarGoogle Scholar
  6. 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 ScholarGoogle Scholar
  7. B6. Bohm, Corrado and Jacopini, Giuseppe. "Flow diagrams, Turing machines and languages with only two formation rules". CACM 9 (May 1966). Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. B7. Burge, W. H. "The evaluation, classification and interpretation of expressions". Proc. ACM 19th National Conf. 1964. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle Scholar
  10. B9. Burstall, R. M. "Writing search algorithms in functional form" Machine Intelligence 3 (Ed. Michie, D.) Edinburgh Univ. Press, Edinburgh, 1968.Google ScholarGoogle Scholar
  11. B10. Burstall, R. M. "Proving properties of programs by structural induction", Computer Journal 12, 1 (Feb. 1969).Google ScholarGoogle ScholarCross RefCross Ref
  12. B11. Burstall, R. M. and Popplestone, R. J. "POP-2 refercnce manual" Machine Intelligence 2 (Ed. Dale & Michie), American Elsevier, New York 1968.Google ScholarGoogle Scholar
  13. 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 ScholarGoogle Scholar
  14. C1. Caracciolo di Forino, A., Spanedda, L. and Wolkenstein, N. "PANON-1B: A programming language for symbol manipulation ", Calcolo, Vol. 3, 1966.Google ScholarGoogle Scholar
  15. C2. Caracciolo di Forino, A. "Generalized Markov algorithms and automata", Automata Theory (Ed. Caianiello, E. R.), Academic Press, New York, 1966.Google ScholarGoogle Scholar
  16. C3. Christenson, Carlos, "Examples of symbol manipulation in the AMBIT programming language". Proc. ACM 20th National Conf., Cleveland, Ohio, Aug. 1965. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. C4. Church, A., "The calculi of lambda-conversion", Annals of Math. Studies No. 6, Princeton Univ. Press, Princeton, New Jersey (1951). Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. C5. Cohen, K. and Wegstein, J. H., "AXLE, an axiomatic language for string transformations", CACM 8, (1965), 657--661. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. C6. Cooper, D. C. "On the equivalence of certain computations"Computer Journal 9 (1966), 45--52.Google ScholarGoogle ScholarCross RefCross Ref
  20. 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 ScholarGoogle Scholar
  21. C8. Cooper, D. C. "Bohm and Jacopini's reduction of flow charts". Letter to the Editor, CACM 10 (Aug. 1967). Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle Scholar
  23. C10. Coulouris, G. F. "Principles for implementing useful subsets of advanced programming languages", Machine Intelligence 1 (Ed. Collins & Michie), Oliver & Boyd, Edinburgh, 1967.Google ScholarGoogle Scholar
  24. C11. Curry, H. and Feys, R. Combinatory Logic, Vol. 1, North-Holland, Amsterdam, 1958.Google ScholarGoogle Scholar
  25. 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 ScholarGoogle Scholar
  26. 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 ScholarGoogle Scholar
  27. D3. Dijkstra, E. W. "Recursive programming", Programming Systems and Languages (Ed. Rosen, S.), McGraw-Hill, New York 1967.Google ScholarGoogle Scholar
  28. D4. Dijkstra, E. W. "Go to statement considered harmful", Letter to the Editor, CACM 11 (March 1968). Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. D5. Dijkstra, E. W. "A constructive approach to the problem of program correctness", BIT 8 (1968).Google ScholarGoogle Scholar
  30. D6. Dijkstra, E. W. "Notes on structured programming", EWD 249, Technical University, Eindhoven, Netherlands, 1969.Google ScholarGoogle Scholar
  31. El. Ershov, A. P. "Theory of program schemata", Proc. IFIP Congress 71, Ljubljana, Aug. 1971.Google ScholarGoogle Scholar
  32. F1. Farber, D. J., Griswold, R. E. and Polonsky, I. P. "SNOBOL, a string manipulation language", JACM 11 (January 1964). Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. F2. Fisher, David A. "Control structures for programming languages", PhD. Thesis, Carnegie-Mellon Univ., Pittsburgh, Pa., May 1970. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. F3. Floyd, R. W. "A descriptive language for symbol manipulation", JACM 8, 4 (1961). Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. F4. Floyd, R. W. "Nondeterministic algorithms", JACM 14 (Oct. 1967). Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. F5. Floyd, R. W. "Assigning meanings to programs", Proc. Symp. Applied Math., AMS Vol. 19, 1967.Google ScholarGoogle Scholar
  37. G1. Galler, B. A. and Fischer, M. J. "The iteration element", CACM 8 (June 1965). Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. G2. Galler, B. A. and Perlis, A. J. A View of Programming Languages, Addison-Wesley, Reading, Mass., 1970. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. 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 ScholarGoogle Scholar
  40. G4. Goodstein, R. L. Recursive Analysis, North-Holland, Amsterdam, 1961.Google ScholarGoogle Scholar
  41. G5. Griswold, R. E. Poage, J. F. and Polonsky, I. P. The SNOBOL4 Programming Language, Prentice-Hall, Englewood Cliffs, N. J. 1968. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. G6. Guzman, Adolfo and McIntosh, H. "CONVERT", CACM 9 (Aug. 1966). Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. H1. Hopkins, Martin, "A case for the goto", Proceedings ACM '72, Boston, August 1972. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. I1. Ianov, Y. I. "On the equivalence and transformation of program schemes", CACM 1 (1958), 8--12. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. I2. Ianov, I. "The logical schemes of algorithms", Problems of Cybernetics I (English translation) Pergamon Press, Oxford 1960, 82--140.Google ScholarGoogle Scholar
  46. J1. Johansen, Peter, "Non-deterministic programming", BIT 7 (1967), 289--304.Google ScholarGoogle ScholarCross RefCross Ref
  47. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  48. K1. Kleene, S. C. Introduction to Metamathematics, Van Nostrand, New York, 1952.Google ScholarGoogle Scholar
  49. K2. Knuth, D. E. and Floyd, R. W. "Notes on avoiding 'goto' statements", Information Processing Letters 1, North-Holland, Amsterdam (1971), 23--31.Google ScholarGoogle Scholar
  50. L1. Landin, P. J. "The mechanical evaluation of expressions", Computer Journal 6, 4 (1964).Google ScholarGoogle ScholarCross RefCross Ref
  51. L2. Landin, P. J. "A correspondence between ALGOL 60 and Church's lambda-notation", CACM 8, 2 and 3 (1965). Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. L3. Landin, P. J. "The next 700 programming languages", CACM 9 (March 1966). Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. L4. Leavenworth, B. M. "The definition of control structures in MCG360". Report RC2376 (Feb. 1969). IBM Research Division, Yorktown Heights, N. Y.Google ScholarGoogle Scholar
  54. L5. Ledgard, H. F. "Ten mini-languages: A study of topical issues in programming languages", ACM Computing Surveys, 3, 3 (Sept. 1971). Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. 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 ScholarGoogle Scholar
  56. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  57. M1. Markov, A. A. "The theory of algorithms" (Russian Translation), U. S. Dept. of Commerce, Office of Technical Services No. OTS 60-51085.Google ScholarGoogle Scholar
  58. M2. McCarthy, J. et al, LISP 1.5 Programmers Manual, The M.I.T. Press, Cambridge, Mass. 1962. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. M3. McCarthy, J. "Towards a mathematical science of computation", Proc. IFIP Congress, Munich 1962, North-Holland, Amsterdam.Google ScholarGoogle Scholar
  60. M4. McCarthy, J. "Basis for a mathematical theory of computation", Computer Programming and Formal Systems (Eds. Braffort & Hirschberg), North-Holland, Amsterdam, 1963.Google ScholarGoogle Scholar
  61. 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 ScholarGoogle Scholar
  62. M6. Minsky, M. L. Computation: Finite and Infinite Machines, Prentice-Hall, Englewood Cliffs, N. J. 1967. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. M7. Mooers. C. N. and Deutsch, L. P. "TRAC: A text handling language" Proc. ACM 20th National Conf. Cleveland, Ohio (Aug. 1965).Google ScholarGoogle Scholar
  64. N1. Naur, P. "Proof of algorithms by general snapshots", BIT 6, 1966.Google ScholarGoogle Scholar
  65. N2. Naur, P. "Programming by action clusters", BIT 9, 1969.Google ScholarGoogle Scholar
  66. P1. Paterson, M. S. "Program schemata", Machine Intelligence 3 (Ed. Michie. D.), Edinburgh Univ. Press, Edinburgh, 1968.Google ScholarGoogle Scholar
  67. 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 ScholarGoogle Scholar
  68. P3. Perlis, A. J., Lecture Notes on Seminar on Extensible Languages. Carnegie-Mellon University, Fall, 1968.Google ScholarGoogle Scholar
  69. P4. Peter, Rozsa. Recursive Functions, Academic Press, New York, 1967.Google ScholarGoogle Scholar
  70. P5. Post, E. I. "Finite combinatory processes - formulation I", Journal of Symbolic Logic, Vol. 1, (1936).Google ScholarGoogle ScholarCross RefCross Ref
  71. R1. Reynolds, J. C. "GEDANKEN: A simple typeless language based on the principle of completeness and the reference concept", CACM 13 (May 1970). Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. R2. Rice, H. G. "Recursion and iteration', CACM 8 (Feb. 1965). Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. R3. Rice, J. R. "The goto statement reconsidered", Letter to the Editor, CACM 11 (1968) 538. Google ScholarGoogle ScholarDigital LibraryDigital Library
  74. R3. Rutledge, J. D. "On Ianov's program schemata", JACM 11 (1964), 1--9. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. S1. Schorre, D. V. "Improved organization for procedural languages", Technical Memo, August 1966, System Development Corp., Santa Monica, Calif.Google ScholarGoogle Scholar
  76. S2. Shepherdson, J. C. and Sturgis, H. E. "Computability of recursive functions", JACM 10, 2 (1963). Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. S3. Stark. R. "A language for algorithms", Computer Journal Vol. 14, No. 1 (Feb. 1971).Google ScholarGoogle ScholarCross RefCross Ref
  78. S4. Strachey, C. "A general purpose macrogenerator", Computer Journal, Vol. 8, (Oct. 1965).Google ScholarGoogle ScholarCross RefCross Ref
  79. S5. Strachey, C. "Fundamental concepts in programmings", NATO Conf., Copenhagen 1967.Google ScholarGoogle Scholar
  80. S6. Strong, H. R., Jr. "Translating recursion equations into flow charts", Journal of Computer and System Sciences, 5, 3 (June 1971).Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. T1. Turing, A. M. "On computable numbers with an application to the Entscheidungsproblem", Proc. London Math. Soc., ser. 2, Vol. 42 (1936--1937).Google ScholarGoogle Scholar
  82. 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 ScholarGoogle Scholar
  83. W1. Wang, H. "A variant to Turing's theory of computing machines, JACM 4, 1 (1957). Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. 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 ScholarGoogle Scholar
  85. W3. Wirth, Niklaus and Hoare, C. A. R. "A contribution to the development of ALGOL", CACM 9 (June 1966). Google ScholarGoogle ScholarDigital LibraryDigital Library
  86. W4. Wirth, N. "On certain basic concepts of programming languages", Computer Science Technical Report No. CS65, Stanford University, 1967. Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. W5. Wirth, N. "Program development by stepwise refinement", CACM 14 (April 1971). Google ScholarGoogle ScholarDigital LibraryDigital Library
  88. W6. Wozencraft, J. M. and Evans, A. Jr., "Notes on programming linguistics", Dept. of Electrical Engineering, MIT, Cambridge, Mass., Feb. 1971.Google ScholarGoogle Scholar
  89. W7. Wulf, W. A. "Programming without the goto", Proc. IFIP Congress 71, Ljubljana, Aug. 1971.Google ScholarGoogle Scholar
  90. W8. Wulf, W. A. Russell, D. B. and Habermann, A. N. "BLISS: a language for systems programming, CACM 14 (Dec. 1971). Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. W9. Wulf, W. A. "A case against the goto". Proceedings ACM '72, Boston, August 1972. Google ScholarGoogle ScholarDigital LibraryDigital Library
  92. Y1. Yngve, V. H. Computer Programming with COMITII, The M.I.T. Press, Cambridge, Mass. 1972.Google ScholarGoogle Scholar

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in

Full Access

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader