Object-oriented programminglanguages allow inter-object aliasing. Although necessary to construct linked data structures and networks of interacting objects, aliasing is problematic in that an aggregate object's ...
详细信息
Object-oriented programminglanguages allow inter-object aliasing. Although necessary to construct linked data structures and networks of interacting objects, aliasing is problematic in that an aggregate object's state can change via an alias to one of ifs components, without the aggregate being aware of any aliasing. Ownership types form a static type system that indicates object ownership. This provides a flexible mechanism to limit the visibility of object references and restrict access paths to objects, thus controlling a system's dynamic topology. The type system is shown to be sound, and the specific aliasing properties that a system's object graph satisfies are formulated and proven invariant for well-typed programs.
Arrays of characters are a basic data type in many programminglanguages, but strings and substrings are seldom accorded first-class status as parameters and return values. Such status would enable a routine that call...
详细信息
Arrays of characters are a basic data type in many programminglanguages, but strings and substrings are seldom accorded first-class status as parameters and return values. Such status would enable a routine that calls a search function to readily access context on both sides of a return value. To enfranchise substrings, this paper describes a new data type for substrings as a special case of one for general subsequences. The key idea is that values are not sequences or references to positions in sequences, but rather references to subsequences. Primitive operations on the data type are constants, concatenation, and four new functions-base, start, next, and extent-which map subsequence references to subsequence references. This paper informally presents the data type, demonstrates its convenience for defining search functions, and shows how it can be concisely implemented. Examples are given in Ness, a language incorporating the new data type, which is implemented as part of the Andrew User Interface System.
Many languages support behavioral software contracts so that programmers can describe a component's obligations and promises via logical assertions in its interface. The contract system monitors program execution,...
详细信息
Many languages support behavioral software contracts so that programmers can describe a component's obligations and promises via logical assertions in its interface. The contract system monitors program execution, checks whether the assertions hold, and, if not, blames the guilty component. Pinning down the violator gets the debugging process started in the right direction. Quality contracts impose a serious runtime cost, however, and programmers therefore compromise in many ways. Some turn off contracts for deployment, but then contracts and code quickly get out of sync during maintenance. Others test contracts randomly or probabilistically. In all cases, programmers have to cope with lack of blame information when the program eventually fails. In response, we propose option contracts as an addition to the contract tool box. Our key insight is that in ordinary contract systems, server components impose their contract on client components, giving them no choice whether to trust the server's promises or check them. With option contracts, server components may choose to tag a contract as an option and clients may choose to exercise the option or accept it, in which case they also shoulder some responsibility. We show that option contracts permit programmers to specify flexible checking policies, that their cost is reasonable, and that they satisfy a complete monitoring theorem.
While the power of formal semantics is well recognized, it is not usually considered a teaching toot. This paper describes the use of denotational semantics in a course on programming language design for beginning gra...
详细信息
While the power of formal semantics is well recognized, it is not usually considered a teaching toot. This paper describes the use of denotational semantics in a course on programming language design for beginning graduate students. The course introduces the semantic and implementation issues underlying such concepts as naming, block structure, scope rules, parameter passing, flow control, and exception handling. The approach taken is to specify the semantics of these mechanisms, using a simplified form of denotational semantics, and use these descriptions as the basis for discussion. Implementations are developed From the specifications, and are available to students for experimentation.
Interaction nets were introduced almost 15 years ago. Since then they have been put forward as both a graphical programming paradigm and as an intermediate language into which we can compile other languages. Whichever...
详细信息
Interaction nets were introduced almost 15 years ago. Since then they have been put forward as both a graphical programming paradigm and as an intermediate language into which we can compile other languages. Whichever way we use interaction nets, a problem remains in that the language is very primitive. Drawing an analogy with functional programming, we have the lambda-calculus but we are missing the functional programminglanguage: syntactic sugar, language constructs, data-structures, etc. The purpose of this paper is to make a first step towards defining such a programminglanguage for interaction nets.
This paper serves as a brief introduction to the K tool, a system for formally defining programminglanguages. It is shown how sequential or concurrent languages can be defined in K simply and modularly. These formal ...
详细信息
This paper serves as a brief introduction to the K tool, a system for formally defining programminglanguages. It is shown how sequential or concurrent languages can be defined in K simply and modularly. These formal definitions automatically yield an interpreter for the language, as well as program analysis tools such as a state-space explorer.
In this paper an attempt is made to explore the logical foundations of computer programming by use of techniques which were first applied in the study of geometry and have later been extended to other branches of math...
详细信息
In this paper an attempt is made to explore the logical foundations of computer programming by use of techniques which were first applied in the study of geometry and have later been extended to other branches of mathematics. This involves the elucidation of sets of axioms and rules of inference which con be used in proofs of the properties of computer programs. Examples are given of such axioms and rules, and a formal proof of a simple theorem is displayed. Finally, it is argued that important advantages, both theoretical and practical, may follow from a pursuance of these topics. [ABSTRACT FROM AUTHOR]
The classical process of partitioning an array into subarrays is extended to a more useful array language operation. Various modes of partitioning are defined for different types of arrays, so that subarrays may vary ...
详细信息
The classical process of partitioning an array into subarrays is extended to a more useful array language operation. Various modes of partitioning are defined for different types of arrays, so that subarrays may vary over the original array in a nearly arbitrary manner. These definitions are motivated with several realistic examples to illustrate the value of partitioning for array languages. Of general interest Is the data structure for partitioning. This consists of dynamic tree structures which are used to derive and maintain the array control information. These are described in sufficient detail to be of value In the design of other array languages. The description presented in this paper is Implemented in a new array language, OL/2, currently under development at the University of lllinois. [ABSTRACT FROM AUTHOR]
作者:
WEGNER, ETECH UNIV BERLIN
INFORMATIK FORSCH GRP PROGRAM & COMPILEN 2ERNST REUTER PLATZ 8BERLIN 10WEST GERMANY
Describes a style of computer programming which combines the advantages of structured programming with nearly all the power of the jump. Gap between the adherents of structured programming and the devotees of the unre...
详细信息
Describes a style of computer programming which combines the advantages of structured programming with nearly all the power of the jump. Gap between the adherents of structured programming and the devotees of the unrestricted goto; Advantages of structured programming; Types of flowcharts used in decomposing an action; Limitations and drawbacks of the programming style.
Communication with the computer is by artificial languages: programminglanguages and command languages, as well as ad hoc languages of messages. While many such languages are sufficiently rich to permit proper expres...
详细信息
Communication with the computer is by artificial languages: programminglanguages and command languages, as well as ad hoc languages of messages. While many such languages are sufficiently rich to permit proper expression of what must be said, some are so limited or inconsistent that a user must go to needless effort in learning the language and using it to communicate successfully with the *** part of the final exam of a course on the design of computer languages for human use, students were asked to suggest what “... the languagedesigner can do to make the programming process as difficult as possible.” This paper contains some of the more popular responses, annotated with examples from current programminglanguages and systems.1
暂无评论