This paper describes a layered model of the semantics of the data control aspect of programminglanguages;this aspect of programming language semantics concerns access to the data objects of the program. The model is ...
详细信息
This paper describes a layered model of the semantics of the data control aspect of programminglanguages;this aspect of programming language semantics concerns access to the data objects of the program. The model is an information structure model in which the information structures are defined in a relatively precise manner using algebraic specification techniques for abstract data types. The use of abstract data types is also the key to the layering of the description: the outermost layer describes the semantics of the language feature, the middle layer contains definitions for the manipulation of the information structures used within the model, and the innermost layer contains precise descriptions of these information structures.
Three experiments were conducted to test the role that semantic knowledge plays in expert programmer ability. In Experiments 1 and 2, changing the normal semantic structure affected experts more than novices, although...
详细信息
Three experiments were conducted to test the role that semantic knowledge plays in expert programmer ability. In Experiments 1 and 2, changing the normal semantic structure affected experts more than novices, although experts still outperformed novices. Experiment 3 showed that the experts' advantage was not due merely to their better knowledge of the keywords used in the programminglanguages. They were also better at searching for types of keywords. Recall and comprehension measures showed the same effects only in Experiment 1. Overall, the results suggest that the role of semantic knowledge in computer programming is more complex than has been previously thought. Merely substituting for keywords or swapping the order of lines still allows the experts to search and attend better to the functions of the program. When semantically complex functions are used, experts are at an equal disadvantage but still outperform novices.
We develop the semantics of a language with arbitrary atomic statements, unbounded nondeterminacy, and mutual recursion. The semantics is expressed in weakest preconditions and weakest liberal preconditions. Individua...
详细信息
We develop the semantics of a language with arbitrary atomic statements, unbounded nondeterminacy, and mutual recursion. The semantics is expressed in weakest preconditions and weakest liberal preconditions. Individual states are not mentioned. The predicates on the state space are treated as elements of a distributive lattice. The semantics of recursion is constructed by means of the theorem of Knaster-Tarski. It is proved that the law of the excluded miracle can be preserved, if that is wanted. The universal conjunctivity of the weakest liberal precondition, and the connection between the weakest precondition and the weakest liberal precondition are proved to remain valid. Finally we treat Hoare-triple methods for proving correctness and conditional correctness of programs.
The discipline of software engineering has transferred the commonsense methods of good programming and management to large software projects, it has been less successful in acquiring a solid theoretical foundation for...
详细信息
The discipline of software engineering has transferred the commonsense methods of good programming and management to large software projects, it has been less successful in acquiring a solid theoretical foundation for these methods. We have developed an introductory computer science course, much as calculus is a basic course for mathematics and the physical sciences, concerned primarily with theoretical foundations and methodology rather than apprenticeship through applications. This paper describes the principles taught in the course and gives a small example illustrating them. [ABSTRACT FROM AUTHOR]
This paper concerns the design of editors that perform checks on a language's context-dependent constraints. Our particular concern is the design of an efficient, incremental analysis algorithm for systems based o...
详细信息
This paper concerns the design of editors that perform checks on a language's context-dependent constraints. Our particular concern is the design of an efficient, incremental analysis algorithm for systems based on the attribute-grammar model of editing. With previous incremental evaluation algorithms for arbitrary noncircular attribute grammars, the editing model required there to be a restriction on the operation that moves the editing cursor: moving the cursor was limited to just a single step in the tree — either to the parent node or to one of the child nodes of the current cursor location. This paper describes a new updating algorithm that can be used when an arbitrary movement of the cursor in the tree is permitted. After an operation that restructures the tree, the tree's attributes can be updated with a cost of 0 ((1+|AFFECTED|)·√m), where m is the size of the tree and AFFECTED is the subset of the tree's attributes that require new values, when the cost is amortized over a sequence of tree modifications. the editing cursor may be moved from its current location to any other node of the tree in a single, unit-cost operation. CR Categories and Subject Descriptors: D.2.3 [Software Engineering]: Coding — program editors; D.2.6 [Software Engineering]: programming Environments; D.3.1 [programminglanguages]: Formal Definitions and Theory — semantics, syntax D.3.4 [programminglanguages]: Processors — translator writing systems and compiler generators F.3.2 [Logics and Meanings of Programs]: semantics of programminglanguages — denotational semantics.
In this paper we investigate the fixed points of functions that can be obtained by continuous fixed point operators in Pω. We also introduce an operator Cgn that generates all of these fixed points for any continuous...
详细信息
In this paper we investigate the fixed points of functions that can be obtained by continuous fixed point operators in Pω. We also introduce an operator Cgn that generates all of these fixed points for any continuous function. In the last two sections of the paper we study the fixed points of λa.a∘a (retracts) and of λy λf.f((y)(f)) (fixed point operators).
Recent developments by Hewitt and others have stimulated interest in message-passing constructs as an alternative to the more conventional applicative semantics on which most current languages are based. The present w...
详细信息
Recent developments by Hewitt and others have stimulated interest in message-passing constructs as an alternative to the more conventional applicative semantics on which most current languages are based. The present work illuminates the distinction between applicative and message-passing semantics by means of the μ-calculus, a syntactic model of message-passing systems similar in mechanism to the λ-calculus. Algorithms for the translation of expressions from the λ- to the μ-calculus are presented, and differences between the two approaches are ***-passing semantics seem particularly applicable to the study of multiprocessing. The μ-calculus, through the mechanism of conduits, provides a simple model for a limited but interesting class of parallel computations. Multiprocessing capabilities of the μ-calculus are illustrated, and multiple-processor implementations are discussed briefly.
We describe a means of presenting hierarchically organized formal definitions of programminglanguages using the denotational approach of D. Scott and C. Strachey. As an example of our approach, we give the semantics ...
详细信息
Design and correctness proof of a compiler for Lucid, a non-procedural proof-oriented programminglanguage, are given. Starting with the denotational semantics of Lucid, an equivalent operational semantics is derived,...
详细信息
Design and correctness proof of a compiler for Lucid, a non-procedural proof-oriented programminglanguage, are given. Starting with the denotational semantics of Lucid, an equivalent operational semantics is derived, and from it the design of compiling algorithms. The algorithms are proved to compile correctly a subset of the language. A discussion of the design choices and of the subset restrictions gives insight into the nature of Lucid as well as into the problem of compiling related non-procedural languages.
暂无评论