Results 1  10
of
13
Structured programming with go to statements
 Computing Surveys
, 1974
"... A consideration of several different examples sheds new light on the problem of ereating reliable, wellstructured programs that behave efficiently. This study focuses largely on two issues: (a) improved syntax for iterations and error exits, making it possible to write a larger class of programs c ..."
Abstract

Cited by 82 (3 self)
 Add to MetaCart
(Show Context)
A consideration of several different examples sheds new light on the problem of ereating reliable, wellstructured programs that behave efficiently. This study focuses largely on two issues: (a) improved syntax for iterations and error exits, making it possible to write a larger class of programs clearly and efficiently without go to state
Storage requirements for deterministic polynomial time recognizable languages
 Journal of Computer and System Sciences
, 1976
"... An intriguing question is whether (log n) ~ space is enough to recognize the class 9 ~ of languages recognizable in deterministic polynomial time. This question has earlier been narrowed own to the storage required to recognize a particular language called NP. SP is clearly in ~ and it has been sho ..."
Abstract

Cited by 36 (2 self)
 Add to MetaCart
(Show Context)
An intriguing question is whether (log n) ~ space is enough to recognize the class 9 ~ of languages recognizable in deterministic polynomial time. This question has earlier been narrowed own to the storage required to recognize a particular language called NP. SP is clearly in ~ and it has been shown that if SP has tape complexity (log n) ~, then every member of 9 ~ has tape complexity (log n) ~. This paper presents further evidence in support of the conjecture that SP cannot be recognized using storage (log n) ~ for any k. We have no techniques at present for proving such a statement for Turing machines in general; we prove the result for a suitably restricted evice. 1.
Recursion from Iteration
 Lisp and Symbolic Computation
, 1994
"... . In a simplytyped, callbyvalue (CBV) language with firstclass continuations, the usual CBV fixpoint operator can be defined in terms of a simple, infinitelylooping iteration primitive. We first consider a natural but flawed definition, based on exceptions and "iterative deepening" of ..."
Abstract

Cited by 10 (0 self)
 Add to MetaCart
(Show Context)
. In a simplytyped, callbyvalue (CBV) language with firstclass continuations, the usual CBV fixpoint operator can be defined in terms of a simple, infinitelylooping iteration primitive. We first consider a natural but flawed definition, based on exceptions and "iterative deepening" of finite unfoldings, and point out some of its shortcomings. Then we present the proper construction using full firstclass continuations, with both an informal derivation and a proof that the behavior of the defined operator faithfully mimics a "builtin" recursion primitive. In fact, given an additional uniformity assumption, the construction is a twosided inverse of the usual definition of iteration from recursion. Continuing, we show that the CBV looping primitive is in fact the directstyle equivalent of a continuationpassingstyle fixpoint, and that this correspondence extends all the way to traditional definitions of these operators in terms of reflexive types. 1. Introduction 1.1. Background ...
The many disguises of accumulation
, 1991
"... Several descriptions of basically one transformation technique viz accumulation are compared Their basis viz the associativity and the existence of a neutral element inherent in a monoid is identied Keywords transformational programming factorial fast reverse accumulation continuations la ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
Several descriptions of basically one transformation technique viz accumulation are compared Their basis viz the associativity and the existence of a neutral element inherent in a monoid is identied Keywords transformational programming factorial fast reverse accumulation continuations lambda abstraction generalisation tail recursion implementation of lists
Recursion Versus Iteration at HigherOrders
, 1997
"... . We extend the wellknown analysis of recursionremoval in firstorder program schemes to a higherorder language of finitely typed and polymorphically typed functional programs, the semantics of which is based on callbyname parameterpassing. We introduce methods for recursionremoval, i.e. for ..."
Abstract

Cited by 6 (0 self)
 Add to MetaCart
. We extend the wellknown analysis of recursionremoval in firstorder program schemes to a higherorder language of finitely typed and polymorphically typed functional programs, the semantics of which is based on callbyname parameterpassing. We introduce methods for recursionremoval, i.e. for translating higherorder recursive programs into higherorder iterative programs, and determine conditions under which this translation is possible. Just as finitely typed recursive programs are naturally classified by their orders, so are finitely typed iterative programs. This syntactic classification of recursive and iterative programs corresponds to a semantic (or computational) classification: the higher the order of programs, the more functions they can compute. 1 Background and Motivation Although our analysis is entirely theoretical, as it combines methods from typed calculi, from abstract recursion theory and from denotational semantics, the problems we consider have a strong pra...
Future Directions in Program Transformation
"... vation of semantics. When deriving from a program P1 a new program P2 by transformation, we need to preserve semantics, that is, we want Sem(P 1) = Sem(P 2) for some given semantic function Sem. Actually, we want the equivalence induced by Sem to be a congruence w.r.t. the operations which are use ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
vation of semantics. When deriving from a program P1 a new program P2 by transformation, we need to preserve semantics, that is, we want Sem(P 1) = Sem(P 2) for some given semantic function Sem. Actually, we want the equivalence induced by Sem to be a congruence w.r.t. the operations which are used for building programs. This is an important engineering requirement, because for the maintenance and the enhancement of software products we have to allow for the substitution of software modules by new, better modules which satisfy equivalent specifications, and this substitution should not affect the semantics of the programs. For these reasons we look for compositional semantics, that is, semantics which can be defined as homomorphisms over the structure of the programs. Moreover, in order to allow for language evolution we look for tech
Relative Complexity of Algebras
, 1981
"... A simple algebraic model is proposed for measuring the relative complexity of programming systems. The appropriateness of this model is illustrated by its use as a framework for the statement and proof of results dealing with codingindependent limitations on the relative complexity of basic alg ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
A simple algebraic model is proposed for measuring the relative complexity of programming systems. The appropriateness of this model is illustrated by its use as a framework for the statement and proof of results dealing with codingindependent limitations on the relative complexity of basic algebras.
A Program Transformations Methodology for CCS
 In Proceedings of the Fifth Italian Conference of Theoretical Computer Science
, 1995
"... The use of the program transformation methodology has been extensively studied in the framework of functional and logical languages. The aim of this paper is to evaluate the feasibility of a program transformation technique for concurrent programs, and in particular for CCS ones, with the aim of ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
(Show Context)
The use of the program transformation methodology has been extensively studied in the framework of functional and logical languages. The aim of this paper is to evaluate the feasibility of a program transformation technique for concurrent programs, and in particular for CCS ones, with the aim of obtaining a program which has a "more manageable " syntactic form than the initial one, for example for proving properties of programs. In the paper we define a transformation methodology for CCS based on the "rules + strategies" approach. We first define a set of general "equivalence preserving" rules, which are a specialization, for CCS, of classical program transformation rules, such as Folding and Unfolding. Then we define a class of transformation rules specific for CCS. Finally, we give a strategy, using the defined rules, to transform, if possible, a CCS program into one whose operational semantics is a finite state transition system. The problem is significant, since most of the existing verification environments for CCSlike languages are based on an internal finite state representation of the program. We show that the set of programs for which our strategy succeeds properly contains the set of programs for which other existing methods succeed. 1