Flow diagrams, Turing machines and languages with only two formation rules

  • Authors:
  • C. Böhm;G. Jacopini

  • Affiliations:
  • -;-

  • Venue:
  • Classics in software engineering
  • Year:
  • 1979

Quantified Score

Hi-index 0.00

Visualization

Abstract

It is likely that most programmers who have heard anything at all about structured programming also have heard the mysterious names "Böhm" and "Jacopini." "Oh, yes," they'll say, "all that structured programming stuff was proved by those guys Böhm and Jacopini somewhere in Italy." And yet it's exceedingly unlikely that the average programmer has read the Böhm and Jacopini paper, "Flow Diagrams, Turing Machines and Languages with Only Two Formation Rules," published in 1966. As you begin to read the paper, it will become immediately obvious that the discussion is of an extremely abstract, theoretical nature. Serious academicians accustomed to a regular diet of such papers will no doubt wade through this one, too --- but the average COBOL application programmer probably will be overwhelmed by the time he or she reaches the end of the first paragraph. I have read the paper myself several dozen times during the past twelve years, and honesty requires me to admit that I barely understand it for a period of five minutes after reading the last paragraph, it is certain that I would be at an utter loss to try to describe Böhm and Jacopini's proof to anyone else. I say this to help prevent an inferiority complex on the part of the average reader. This is an important paper, and it does form the theoretical basis of structured programming. So you should read it. But don't feel too embarrassed if most of it is over your head. Indeed, you'll find "The Translation of 'go to' Programs to 'while' Programs," by Ashcroft and Manna [Paper 6], to be much more understandable: They, too, show that any program can be written as a structured program by simply demonstrating that any program can be translated into an equivalent structured program. One last comment about the paper by Böhm and Jacopini: Note that it does not mention programming languages. It describes a set of flow diagrams as a "two-dimensional programming language," but it makes no mention of COBOL, ALGOL, PL/I, or any of the other languages that real-world programmers use. This is far more significant than you might think. What Böhm and Jacopini have proved in this paper is 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. Indeed, if a programming language lacks the constructs to implement directly the Böhm and Jacopini flowcharts, goto-less programming is exceedingly difficult, if not impossible --- as witnessed by such degenerate languages as FORTRAN. This distinction between the theoretical possibility of structured programming, and the real-world practicality of structured programming is, of course, at the heart of the controversy and the squabbling that still goes on today, more than a decade after this paper was written. Examples of this controversy --- the theme of which is, "Yes, we know structured programming is theoretically possible, but do we really want to do it?" --- are seen in papers like Martin Hopkins' "A Case for the GOTO" [Paper 9], or Donald Knuth's "Structured Programming with go to Statements" [Paper 20].