Results 1 - 10
of
16
An extension of Standard ML modules with Subtyping And Inheritance
"... We describe a general module language integrating abstract data types, specifications and object-oriented concepts. The framework is based on the Standard ML module system, with three main extensions: subtyping, a form of object derived from ML structures, and inheritance primitives. The language ai ..."
Abstract
-
Cited by 55 (8 self)
- Add to MetaCart
We describe a general module language integrating abstract data types, specifications and object-oriented concepts. The framework is based on the Standard ML module system, with three main extensions: subtyping, a form of object derived from ML structures, and inheritance primitives. The language aims at supporting a range of programming styles, including mixtures of object-oriented programming and programs built around specified algebraic or higher-order abstract data types. We separate specification from implementation, and provide independent inheritance mechanisms for each. In order to support binary operations on objects within this framework, we introduce "internal interfaces" which govern the way that function components of one structure may access components of another. The language design has been tested by writing a number of program examples; an implementation is under development in the context of a larger project.
Notes on Typed Object-Oriented Programming
- In Proceedings of Theoretical Aspects of Computer Software
, 1994
"... . This paper, which is partly tutorial in nature, summarizes some basic research goals in the study and development of typed objectoriented programming languages. These include both immediate repairs to problems with existing languages and the long-term development of more flexible and expressive, y ..."
Abstract
-
Cited by 32 (2 self)
- Add to MetaCart
. This paper, which is partly tutorial in nature, summarizes some basic research goals in the study and development of typed objectoriented programming languages. These include both immediate repairs to problems with existing languages and the long-term development of more flexible and expressive, yet type-safe, approaches to program organization and design. We summarize and compare three object models used in the theoretical literature. We also consider approaches to a few technical problems, including changes in the type of a method (member function) from super (base) class to sub (derived) class and the use of types that give information about the implementations as well as the interfaces of objects. Such implementation types seem essential for adequate typing of binary operations on objects, for example. 1 Introduction A number of largely "theoretical" research efforts over the last five to ten years have developed and analyzed type systems for model object-oriented languages. Thi...
Partial Orderings of Event Sets and Their Application to Prototyping Concurrent, Timed Systems
- Journal of Systems and Software
, 1992
"... Rapide is a concurrent, object-oriented language specifically designed for prototyping large concurrent systems. One of the principle design goals has been to adopt a computation model in which the synchronization, concurrency, dataflow, and timing aspects of a prototype are explicitly represented a ..."
Abstract
-
Cited by 30 (4 self)
- Add to MetaCart
Rapide is a concurrent, object-oriented language specifically designed for prototyping large concurrent systems. One of the principle design goals has been to adopt a computation model in which the synchronization, concurrency, dataflow, and timing aspects of a prototype are explicitly represented and easily accessible both to the prototype itself and to the prototyper. This paper describes the partially ordered event set (poset) computation model, and the features of Rapide for using posets in reactive prototypes and for automatically checking posets. An example prototyping scenario illustrates uses of the poset computation model, with and without timing. keywords: Rapide, partial orders, prototyping, concurrency, real-time, architecture, programming languages. Principle contact: Larry M. Augustin ERL 414, M/C 4055 Computer Systems Laboratory Stanford University Stanford, CA 94305 Tel: (415) 723--9285 Fax: (415) 725--6949 Email: lma@dayton.Stanford.EDU 1 This research was supported ...
The Development of Type Systems for Object-Oriented Languages
, 1996
"... This paper, which is partly tutorial in nature, summarizes some basic research goals in the study and development of typed object-oriented programming languages. These include both immediate repairs to problems with existing languages and the long-term development of more flexible and expressive, ye ..."
Abstract
-
Cited by 30 (2 self)
- Add to MetaCart
This paper, which is partly tutorial in nature, summarizes some basic research goals in the study and development of typed object-oriented programming languages. These include both immediate repairs to problems with existing languages and the long-term development of more flexible and expressive, yet type-safe, approaches to program organization and design. The technical part of the paper is a summary and comparison of three object models from the literature. We conclude by discussing approaches to selected research problems, including changes in the type of a method from super class to sub class and the use of types that give information about the implementations as well as the interfaces of objects. Such implementation types seem essential for adequate typing of binary operations on objects, for example. 1 Introduction A number of largely "theoretical" research efforts over the last five to ten years have developed and analyzed type systems for model object-oriented languages. This ...
Specifying and testing software components using ADL
, 1994
"... This paper presents a novel approach to unit testing of software components. This approach uses the specification language ADL, that is particularly well-suited for testing, to formally document the intended behavior of software components. Another related language, TDD, is used to systematically de ..."
Abstract
-
Cited by 23 (0 self)
- Add to MetaCart
This paper presents a novel approach to unit testing of software components. This approach uses the specification language ADL, that is particularly well-suited for testing, to formally document the intended behavior of software components. Another related language, TDD, is used to systematically describe the test-data on which the software components will be tested. This paper gives a detailed overview of the ADL language, and a brief presentation of the TDD language. Some details of the actual test system are also presented, along with some significant results.
Exploiting Locality in Maintaining Potential Causality
- Stanford University Computer Systems Laboratory
, 1991
"... In distributed systems it is often important to be able to determine the temporal relationships between events generated by different processes. An algorithm to determine such relationships is presented in [3] and [5]. This algorithm has many favorable attributes such as it allows for any kind of in ..."
Abstract
-
Cited by 22 (2 self)
- Add to MetaCart
In distributed systems it is often important to be able to determine the temporal relationships between events generated by different processes. An algorithm to determine such relationships is presented in [3] and [5]. This algorithm has many favorable attributes such as it allows for any kind of interprocess communication, and it requires no extra synchronization messages, additional communication links or central timestamping authority. The algorithm, however, requires O(n) space for each process (where n is the number of processes). i.e., it requires an overall space of O(n 2 ). This can be a large overhead especially when there are a very large number of processes. By cutting down on this generality, we can significantly decrease the amount of space required to determine temporal relationships. In this paper, we show how one may reduce the space requirements by assuming that the communication links between processes is static and known ahead of time; and also that one is interest...
Completely Bounded Quantification is Decidable
- In ACM SIGPLAN Workshop on ML and its Applications
, 1992
"... This paper proves the decidability of subtyping for F when the bounds on polymorphic types do not contain Top (i.e., in all types of the form 8ff!:ø 1 :ø 2 , ø 1 does not contain Top). This general restriction is subsequently relaxed to allow unbounded quantification. 1 Introduction F [CW85,CG] is ..."
Abstract
-
Cited by 13 (3 self)
- Add to MetaCart
This paper proves the decidability of subtyping for F when the bounds on polymorphic types do not contain Top (i.e., in all types of the form 8ff!:ø 1 :ø 2 , ø 1 does not contain Top). This general restriction is subsequently relaxed to allow unbounded quantification. 1 Introduction F [CW85,CG] is a typed -calculus with subtyping and bounded second-order polymorphism. The importance of F in programming language design is that it provides a simple context for studying the typing problems that arise when subtyping and bounded quantification are added to polymorphic languages such as ML. Curien and Ghelli [CG] recently developed a subtyping algorithm for F and proved its partial correctness. Subsequently, Ghelli [Ghe90] presented a termination proof for this algorithm. A mistake was discovered in this termination proof, following which Pierce [Pie92] presented a proof showing that the subtyping problem for general F types is undecidable. This paper shows how one can make the subtyping p...
Polymorphism and Subtyping in Interfaces
- In ACM Workshop on Interface Definition Languages
, 1994
"... Rapide is a programming language framework designed for the development of large, concurrent, real-time systems by prototyping. The framework consists of a type language and default executable, specification and architecture languages, along with associated programming tools. Interfaces are the cent ..."
Abstract
-
Cited by 11 (5 self)
- Add to MetaCart
Rapide is a programming language framework designed for the development of large, concurrent, real-time systems by prototyping. The framework consists of a type language and default executable, specification and architecture languages, along with associated programming tools. Interfaces are the central construct of the type system. This document describes Rapide interfaces, their expressiveness and their use as a typing construct. 1 Introduction Rapide is a programming language framework consisting of a types language, default executable and specification languages, and a set of tools. Although the languages, together, provide a complete programming language, Rapide is intended to accommodate additional implementation and specification languages. The constant of the framework is the type language, which is intended to be general enough to allow the types of relevant implementation languages to be expressed within it. The types language is a general interface definition language, expre...
Executable Formal Models Of Distributed Transaction Systems Based On Event Processing
, 1996
"... this document are those of the author and should not be interpreted as representative of the official policies, either expressed or implied, of the ONR or the U.S. Government. vii Contents Preface iv Acknowledgements vi 1 Introduction 1 ..."
Abstract
-
Cited by 9 (1 self)
- Add to MetaCart
this document are those of the author and should not be interpreted as representative of the official policies, either expressed or implied, of the ONR or the U.S. Government. vii Contents Preface iv Acknowledgements vi 1 Introduction 1
Building Distributed Ada Applications from Specifications and Functional Components
- In Proceedings of TRI-Ada'91
, 1991
"... CMU/SEI-91-TR-22 ESD-91-TR-22 ..."

