Title
Flow diagrams, turing machines and languages with only two formation rules
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].
Year
DOI
Venue
1966
10.1145/355592.365646
Classics in software engineering
Keywords
Field
DocType
two-dimensional programming language,structured programming stuff,structured programming,important paper,goto-less programming,structured program,jacopini flowcharts,jacopini paper,turing machine,flow diagram,formation rule,programming language,equivalent structured program
Programming language,Normalization (statistics),Object-based language,Flow (psychology),Diagram,Blank,Turing machine,Turing,Jackson structured programming,Mathematics
Journal
Volume
Issue
ISBN
9
5
0-917072-14-6
Citations 
PageRank 
References 
306
196.41
2
Authors
2
Search Limit
100306
Name
Order
Citations
PageRank
Corrado Böhm1487413.44
Giuseppe Jacopini2322198.41