38 citations found. Retrieving documents...
D. E. Knuth, "Structured Programming with the GOTO Statement," Comput. Surveys 6 (1974), .

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:
A Transformation System for Developing Recursive Programs - Burstall, Darlington (1977)   (378 citations)  (Correct)

....one in a systematic way, or indeed in a way which could be mechanized. It is perhaps surprising to notice that even in the rarefied language of purely recursive programs there is a sharp contrast between pr6grams written for maximal clarity and those written for tolerable efficiency. As Knuth [11] points out, one does not have to consider translation from an Algol style language to a machine code language as performed by optimizing compilers to get to grips with the issue; the contrast is in the program structure, particularly in the recursion (or loop) structure. We start with programs ....

KNUTH, D E Structured programming with go to statements ACM Computing Surveys 6, 4 (1974),


A Skip List Cookbook - Pugh (1989)   (2 citations)  (Correct)

....O(log k) time. However, merging balanced trees this way is considerably more complex than the merge algorithm we have presented for skip lists. Constant Factor Speed Comparisons Brown and Tarjan [7] presented an analysis of the constant factors for their merge algorithm on a hypothetical machine [11]. To produce directly comparable results, we designed a new merge algorithm for skip lists that used the same strategy they used: insert the elements from the smaller list one at a time into the larger list using a search finger. The resulting algorithm is 26 statements long. We calculated a ....

Donald Knuth, Structured programming with goto statements. Computing Surveys 6, 4 (Dec 1974) 261-301.


Structure Exits, Not Loops - Ben-Ari (1996)   (Correct)

....particular, when students are later introduced to list processing, sentinels can be used to avoid compound conditions that check for null pointers. Roberts use of the linear search problem to justify break ing a loop in the middle is somewhat surprising. Over twenty years ago in his goto paper [Knu74], Knuth justifies the use of goto in a linear search using arguments similar to Roberts , but immediately adds (p. 267) Unfortunately, however, the example is totally unconvincing in spite of the arguments I ve stated so far, because the method in Example 1 is almost never a good way to ....

Donald E. Knuth. Structured programming with go to statements. Computing Surveys, 6(4):261--301, December 1974.


Generating and Counting Large Binary Flowgraphs - Cooper (2000)   (Correct)

....of programming are known as D charts. The generalization of this type of structured programming gives rise to B ohm and Jacopini charts of type m or BJm charts [3] The BJ 1 charts are the D charts, and the higher level BJm charts use Do While With (at most) m Exits, as advocated by Knuth [10]. Enumeration of unlabelled owgraphs determines the number of intrinsically di erent program structures arising from the model of programming logic under consideration. In the paper Enumeration of structured owcharts, Bender and Butler [2] studied the number of unlabelled BJm owgraphs. They ....

Knuth, D.E. Structured programming with GOTO statement. Comput. Surv. 6, 4 (Dec 1974) 261-301.


Software Construction Using Components - Neighbors (1980)   (23 citations)  (Correct)

....we deal with an integer without considering whether it is represented in binary notation or two s complement, etc. while at deeper levels this representation may be important. At more abstract levels the precise value of the integer is not important except as it relates to other data. [Knuth74] Thus, an assembly at a different level of abstraction becomes a part. This idea will become important later when we discuss the problems encountered by previous work on software parts. From the discussion of the pros and cons of the craftsman and the parts and assemblies approaches, it is ....

....to model the problem. The first step in refinement is to choose some domain in which to work (A323.1) and then to choose some instance of that domain in the internal form (A323.2) Now, within the chosen domain instance a small locale (A323.3O1) may be selected to work on, such as the inner loop [Knuth74] of the problem. Within the chosen locale transformations suggested by the domain transformation library may be applied (A323.4) or refinements for the objects and operations may be selected (A323.5) from the domain component library. The interaction with the transformation mechanism is guided by ....

[Article contains additional citation context not shown here]

Knuth, D.E., Structured Programming with GOTO Statements, ACM Computing Surveys, 6(4):261-301, December, 1974.


Fine-Grained Dynamic Instrumentation Of Commodity Operating.. - Tamches (2001)   (34 citations)  (Correct)

....one of the more expensive places to splice, due to the expense of relocating the overwritten instruction. A paper by Probert [71] contains proofs that basic block counts are insufficient to determine edge counts not only for arbitrary control flow graphs, but also for reducible graphs [50] (ones whose loops have only a single entry point) However, Probert shows that for well delimited programs, whose control flow constructs (if, while, etc. all have corresponding delimiters (end if, end while, etc. a source code transformation can insert basic block counts which are ....

D. E. Knuth. Structured Programming with GOTO Statements. ACM Computing Surveys 6, 4 (1974).


An Open Architecture for Real-Time Audio Processing Software - Chaudhary, Freed, Wright (1999)   (1 citation)  (Correct)

....transform. If more than one Get accesses the same variable, they output in ascending order according to this number. Two such transforms with the same order number output in an indeterminate order. 4 The use of Get and Set in patches is analogous to the use of goto in structured programming [8][9]. Their expressive power comes from the fact that they break the dataflow model, allowing the flow of execution to jump between transforms that are not connected or even in the same patch. Abusing this feature can make programs very di#cult to understand and debug. 2.5 Packages The previous ....

D. Knuth. "Structured Programming with Go To Statements". Computing Surveys, 6:261--301, 1974.


Tree-Based Code Optimization - McConnell (1992)   (3 citations)  (Correct)

....I after S from the abstract syntax and just use S followed by depart I instead. However, in order to simplify our algorithms, we will require that departs and repeats do not occur in the midst of statement lists. CORTL embodies ideas that arose during the structured programming debate, which [Knu74] discusses. To summarize, during the late 1960s and early 1970s the programming community gradually realized that using control structures such as IF THEN and WHILE DO instead of the ubiquitous GOTO improved program clarity [Dij68] At the same time, it became apparent that not all uses of GOTO ....

Donald Knuth. Structured programming with goto statements. ACM Computing Surveys, 6(4):261--301, December 1974.


A Goto-Elimination Method And Its Implementation For The McCat C.. - Erosa (1995)   (2 citations)  (Correct)

.... Goto elimination and the McCAT compiler Over the years there has been substantial discussion about the use of explicit gotos in high level programs and there have been many arguments against the frequent use of gotos from a software engineering or program understandability point of view [Dij68, Knu74, Weg76] This discussion has led to the relatively infrequent use of gotos in typical C programs [BM92] However, in languages like C, there are still special occasions where programmers like to use gotos. These include: 1) using gotos to exit from deeply nested conditionals or loops; 2) using ....

D. E. Knuth. Structured programming with go to statements. Computing Surveys, pages 261--302, Dec 1974.


Inverse Engineering a simple Real Time program - Younger, Ward (1999)   (1 citation)  (Correct)

....execution of a statement of the form exit(n) where n is an integer, not a variable or expression) which causes the program to exit the n enclosing loops. To simplify the language we disallow exits which leave a block or a loop other than an unbounded loop. This type of structure is described in [27] and more recently in [40] 2.4 Procedures and Functions with Parameters We use the following notation for procedures with parameters: begin S 1 where proc F (x; y) S 2 . end where S 1 is a program containing calls to the procedure F which has parameters x and y. The body S 2 of the ....

D. E. Knuth, Structured Programming with the GOTO Statement, Comput. Surveys 6 (1974), 261301.


On Functional Programming, Language Design, and Persistence - Reinke (1998)   (Correct)

....as functional languages seem to take away the very ground on which their programming 1 Another motivation results from considering these features as evil and hoping to avoid their negative effects simply by removing them from the language syntax. For a more balanced view of these ideas see [Knu74, GLSS76] experience is built. So this kind of description achieves none of its goals, and if we imagine the process of changing an imperative language with a functional subset into a purely functional language, we can see that focusing on the features that have been removed is really a ....

Donald E. Knuth. Structured Programming with go to Statements. ACM Computing Surveys, 6(4):261--301, December 1974. (reprinted in [Was80]).


A Recursion Removal Theorem - Ward (1992)   (Correct)

....development of an algorithm from a formal specification. We use semantic preserving transformations to carry out such developments and the theorem proves the correctness of many different classes of recursion removal. This theorem includes as special cases the two techniques discussed by Knuth [13] and Bird [7] We describe some applications of the theorem to cascade recursion, binary cascade recursion, Gray codes, and an inverse engineering problem. 1 Introduction In this paper we briefly introduce some of the ideas behind the transformation theory we have developed over the last eight ....

....begin S 1 where proc X j S 2 : end = DF S 1 [proc X j S 2 : X] 2.4 Exit Statements Our programming language will include statements of the form exit(n) where n is an integer, not a variable) which occur within loops of the form do S od where S is a statement. These were described in [13] and more recently in [19] They are infinite or unbounded loops which can only be terminated by the execution of a statement of the form exit(n) which causes the program to exit n of the enclosing loops. To simplify the language we disallow exits which leave a block or a loop other than an ....

D. E. Knuth, "Structured Programming with the GOTO Statement," Comput. Surveys 6 (1974), 261--301.


A Recursion Removal Theorem - Proof and Applications - Ward (1999)   (Correct)

....Rd Durham DH1 3LE February 23, 1999 Abstract In this paper we brie y introduce a Wide Spectrum Language and its transformation theory and describe a recent success of the theory: a general recursion removal theorem. This theorem includes as special cases the two techniques discussed by Knuth [12] and Bird [7] We describe some applications of the theorem to cascade recursion, binary cascade recursion, Gray codes, the Towers of Hanoi problem, and an inverse engineering problem. 1 Introduction In this paper we brie y introduce some of the ideas behind the transformation theory we have ....

....procedure: begin S 1 where proc X S 2 . end = DF S 1 [proc X S 2 . X] 2.2 Exit Statements Our programming language will include statements of the form exit(n) where n is an integer, not a variable) which occur within loops of the form do S od where S is a statement. These were described in [12] and more recently in [18] They are in nite or unbounded loops which can only be terminated by the execution of a statement of the form exit(n) which causes the program to exit the n enclosing loops. To simplify the language we disallow exits which leave a block or a loop other than an ....

D. E. Knuth, Structured Programming with the GOTO Statement, Comput. Surveys 6 (1974), 261301.


Efficient Call-by-value Evaluation Strategy of Primitive.. - Mößle, Vogler   (Correct)

....[McC60] However, the creation and administration of activation blocks cause a great amount of runtime overhead and hence, great efforts have been made to transform the programs such that recursion is replaced by iteration. Such transformations are quoted as recursion elimination (see, e.g. [Knu74], Ric65] Bir77a] Bir77b] AS78] In functional programming languages, recursion is even the most important way of defining objects. And in fact, during the investigation of functional programming languages, new facettes with respect to recursion elimination appeared [BD77, Bir80, Boi92] ....

D.E. Knuth. Structured programming with go to statements. ACM Computing Surveys, 6(4):261--301, 1974.


Curricular Trends, First-Year Courses, Curriculum Design, Academic.. - Kay (1996)   (Correct)

....The introduction of structured programming grew from a letter of Dijkstra s[4] into a raging controversy, with one camp regarding any use of a goto as a mortal sin and the other resentful of any attempt to rein in their creative freedom as programmers. Even Knuth s moderating voice six years later[5] did not mark the end of the controversy. We computer scientists are not immune to the human foible of regarding our own approach as the one best way and labeling as an idiot anyone who does not see things as we do. A position stated in stark, extreme, revolutionary terms is more likely to ....

Knuth, D. E., "Structured Programming with go to Statements," Computing Surveys vol. 6 no. 4 pg. 261 (December 1974).


Structured Programs have Small Tree-Width and Good Register.. - Thorup (1995)   (13 citations)  (Correct)

....2 by showing Theorem 3 Assuming short circuit evaluation, ffl Goto free Algol [31] and Pascal [38] programs have ( 3) complex control flow graphs. ffl All Modula 2 [39] programs have ( 5) complex control flow graphs. 1 Structured programs is not an well defined agreed upon term (see e.g. [18, 19, 29, 31, 32]) In this paper, we are referring specifically to the aspect of being goto free. ffl Goto free C [28] programs have ( 6) complex control flow graphs. Without short circuit evaluation, each of the above complexities drops by one 2 . Control flow graphs with listings of the above complexities ....

....k 1. The NP completeness follows from the fact that a cycle has tree width 2, and for a cycle the coloring problem for the intersection graph is known to be NP complete [21] The relationship to tree width is relevant to goto users. One could imagine that even gotousers have structured thoughts [29], hence that also the control flow graphs of their programs have simple listings bounded tree width. For variable k, the problem of deciding the tree width is NPhard [4] For fixed k, however, there are linear time algorithms [8] Also, for variable k, there has been work done on polynomial ....

D.E. Knuth, Structured Programming with Go To Statements, ACM Computing Surveys 6, 4 (1974) 261--301.


Tree-Based Code Optimization - Mcconnell (1993)   (3 citations)  (Correct)

....is only slightly more restrictive than the common assumption of reducibility. Thus, to belabor an earlier metaphor, the GOTO tail is a very small part of the control structure dog, and we can treat it accordingly. cortl embodies ideas that arose during the structured programming debate [Knu74] To summarize, during the late 1960s and early 1970s the programming community gradually realized that using control structures such as IF THEN and WHILE DO instead of the ubiquitous GOTO improved program clarity [Dij68] At the same time, it became apparent that not all uses of GOTO were ....

Donald Knuth. Structured programming with goto statements. ACM Computing Surveys, 6(4):261--301, December 1974.


Taming Control Flow: A Structured Approach to Eliminating.. - Erosa, Hendren (1993)   (25 citations)  (Correct)

....and e ective. ntroduction and oti ation Over the years there has been substantial discussion about the use of explicit gotos in high level programs and there have been many arguments against the frequent use of gotos from a software engineering or program understandability point of view [Dij68, Knu74, Weg76] This discussion has led to the relatively infrequent use of gotos in typical C programs [BM92] However, in languages like C, there are still special occasions where programmers like to use gotos. These include: 1) using gotos to exit from deeply nested conditionals or loops (2) using ....

D. E. Knuth. Structured programming with go to statements. Computing Surveys, Dec 1974.


A Skip List Cookbook - Pugh (1990)   (2 citations)  (Correct)

.... 1 do while x forward[i] NIL do x : x forward[i] if i list2 level then x forward[i] list2 header forward[i] free(list2) FIGURE 9 Concatenating and splitting skip lists Brown and Tarjan [7] presented an analysis of the constant factors for their merge algorithm on a hypothetical machine [11]. To produce directly comparable results, we designed a new merge algorithm for skip lists that used the same strategy they used: insert the elements from the smaller list one at a time into the larger list using a search finger. The resulting algorithm is 26 statements long. We calculated a ....

Donald Knuth, Structured programming with goto statements. Computing Surveys 6, 4 (Dec 1974) 261-301.


Derivation of Data Intensive Algorithms by Formal Transformation.. - Ward (1996)   (1 citation)  (Correct)

....execution of a statement of the form exit(n) where n is an integer, not a variable or expression) which causes the program to exit the n enclosing loops. To simplify the language we disallow exits which leave a block or a loop other than an unbounded loop. This type of structure is described in [26] and more recently in [37] 3.1 Action Systems A true wide spectrum language requires some notation for unstructured transfer of control (goto statements) We introduce the concept of an Action System as a set of parameterless mutually recursive procedures. A program written using labels and ....

D. E. Knuth, "Structured Programming with the GOTO Statement," Comput. Surveys 6 (1974), .


A Control-Flow Normalization Algorithm and Its Complexity - Ammarguellat (1992)   (31 citations)  (Correct)

....statements, adding control flow variables, copying code, creating and calling procedures and adding levels of iteration. Each of them may be appropriate for some cases; however the programs they produce are often less regular than those produced by our method and often contain more replicated code [27]. None presents a simple comprehensive algorithm for the normalization of all control flowgraphs. We present, below, a limited overview of each of these methods; however, we emphasize Kennedy s method [5] since it is the most recent and the closest to our own method. Bohm and Jacopini [13] ....

D.E. Knuth. Structured programming with goto statements. ACM Computing Surveys, 6(4):261--302, 1974.


Expressive Power of Declarative Programming Languages - Matsushita (1998)   (1 citation)  (Correct)

....structural restriction on programs. If we replace go to statements with appropriate conditional blocks, the resulting programs are much easier to prove correct. However, carefully and sparingly used go to statements are known to be very effective to produce concise and clear programs. Knuth wrote [35]: There are several kinds of programming situations in which go to statements are harmless, even desirable . Ease of proof is obtained by giving up a part of expressiveness. Another example showing the conflict between expressiveness and verifiability is the call by name parameter passing ....

D. E. Knuth. Structured programming with go to statements. Computing survey, 6(4):261--301, December 1974.


Taming Control Flow: A Structured Approach to Eliminating.. - Erosa, Hendren (1994)   (25 citations)  (Correct)

....and effective. 1 Introduction and Motivation Over the years there has been substantial discussion about the use of explicit gotos in high level programs and there have been many arguments against the frequent use gotos from a software engineering or program understandability point of view [9, 13, 15]. This discussion has led to the relatively infrequent use of gotos in typical C programs [5] However, in languages like C, there are still special occasions where programmers like to use gotos. These include: 1) using gotos to exit from deeply nested conditionals or loops; 2) using gotos to ....

D. E. Knuth. Structured programming with go to statements. Computing Surveys, pages 261--302, Dec 1974.


Iterative Procedures for Computing Ackerman's Function - Ward (1993)   (1 citation)  (Correct)

....A 6= hi do hm; xi pop A; if m = 0 while B do S 1 ; A push h3; xi; A push h0; g 2 (x)i; A push h2; xi; x : g 1 (x) od; S 4 ut m = 2 S 2 ut m = 3 S 3 od. The transformation of a tail recursive call into a goto statement (here replaced by a while loop) is discussed in [16]. In the case of Ackermann s function (version A 1 above) we have S 2 = S 3 = skip so we only need to postpone obligations to execute A and the mark can be dispensed with since all the marks have the value 0. This was why we identi ed r and n above otherwise S 2 = n : r, which cannot be ....

D. E. Knuth, \Structured Programming with the GOTO Statement," Comput. Surveys 6 (1974), 261-301.


All Structured Programs have Small Tree-Width and Good Register.. - Thorup (1998)   (10 citations)  (Correct)

....2 by showing Theorem 3 Assuming short circuit evaluation, ffl Goto free Algol [30] and Pascal [37] programs have ( 3) complex control flow graphs. ffl All Modula 2 [38] programs have ( 5) complex control flow graphs. 1 Structured programs is not an well defined agreed upon term (see e.g. [18, 19, 28, 30, 31]) In this paper, we are referring specifically to the aspect of being goto free. ffl Goto free C [27] programs have ( 6) complex control flow graphs. Without short circuit evaluation, each of the above complexities drops by one 2 . Control flow graphs with listings of the above complexities ....

....known for constructing linear time algorithms for problems that are generally NP hard, or even P space hard [4, 5, 9, 11, 17] 7 Concluding remarks So far, we have only addressed structured programs of imperative languages. However, one could imagine that even goto users have structured thoughts [28], hence that also the control flow graphs of their programs have simple listings bounded tree width. For variable k, the problem of deciding the tree width is NP hard [3] For fixed k, however, there are linear time algorithms [8] Also, for variable k, there has been work done on polynomial ....

D.E. Knuth, Structured Programming with Go To Statements, ACM Computing Surveys 6, 4 (1974) 261--301.


The Evolution of Lisp - Steele, Jr., Gabriel (1993)   (15 citations)  (Correct)

....second list mentions variables that may be introduced by the macro expansion but are intended to interact with the argument forms. For example, consider an implementation (using the Scheme call with current continuation primitive) of a slight generalization of the n 1 2 loop attributed to Dahl [Knuth, 1974]; it executes statements repeatedly until its while clause (if any) fails or until exit is used. extend syntax (loop while repeat) exit) loop e1 e2 . repeat) call cc (lambda (exit) label foo (lambda ( e1 e2 . foo) loop e1 . while p e2 . repeat) call cc (lambda (exit) ....

Knuth, Donald E. Structured programming with GO TO statements. Computing Surveys, 6:4, pp. 261--301, December 1974.


Formal Methods to Aid the Evolution of Software - Ward, Bennett (1995)   (5 citations)  (Correct)

....example) is a program with complex data structures (trees implemented as four way linked structures) and highly complex control flow. Algorithm 2.3.3.A from Knuth s Fundamental Algorithms [16] P.357) is an algorithm for the addition of polynomials represented using four directional links. In [14] Knuth describes this as having a complicated structure with excessively unrestrained goto statements and goes on to say I hope someday to see the algorithm cleaned up without loss of its efficiency . In [39] we use program transformations to manipulate the program, using semantics preserving ....

D. E. Knuth, "Structured Programming with the GOTO Statement," Comput. Surveys 6 (1974), 261--301.


Ecient Coroutine Generation of Constrained Gray Sequences - Donald Knuth And   Self-citation (Knuth)   (Correct)

No context found.

Donald E. Knuth, \Structured programming with go to statements," Computing Surveys 6 (December


Derivation of Data Intensive Algorithms by Formal Transformation - .. - Ward (1996)   (1 citation)  (Correct)

No context found.

D. E. Knuth, "Structured Programming with the GOTO Statement," Comput. Surveys 6 (1974), .


A Recursion Removal Theorem - Proof and Applications - Ward (1999)   (Correct)

No context found.

D. E. Knuth, Structured Programming with the GOTO Statement, Comput. Surveys 6 (1974), 261301.


Iterative Procedures for Computing Ackerman's Function - Ward (1993)   (1 citation)  (Correct)

No context found.

D. E. Knuth, \Structured Programming with the GOTO Statement," Comput. Surveys 6 (1974), 261-301.


A New Protection Model for Component-Based Operating Systems - Law (2001)   (4 citations)  (Correct)

No context found.

D. E. Knuth. Structured Programming with Go To Statements. Computing Surveys, 6:261{ 301, 1974.


C∀, a Study in Evolutionary Design in Programming Languages - Jaramillo (2004)   (Correct)

No context found.

Donald E. Knuth. Structured programming with go to statements. ACM Computing Surveys, 6(4):261-301, December 1974.


Pigs from Sausages? Reengineering from Assembler to C via FermaT.. - Ward (2004)   (Correct)

No context found.

D. E. Knuth, "Structured Programming with the GOTO Statement," Comput. Surveys 6 (1974), 261--301.


Engineering a Sort Function - Bentley, McIlroy (1993)   (6 citations)  (Correct)

No context found.

D. E. Knuth, `Structured programming with goto statements', Computing Surveys, 6, 261-301 (1974).


Assignment Guidelines - Buhr (2000)   (Correct)

No context found.

Donald E. Knuth. Structured Programming with go to Statements. ACM Computing Surveys, 6(4):261--301, December 1974.


Frameworks for Compound Active Documents - Wegner (1997)   (Correct)

No context found.

Donald Knuth, Structured Programming with Goto Statements, Computing Surveys, December 1974.


Formal Methods - Selected Historical References - Jones, McCauley (1992)   (1 citation)  (Correct)

No context found.

D. E. Knuth. Structured programming with GO TO statements. Technical Report STAN-CS-74416, Computer Science Dept, Stanford University, May 1974.

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC