Results 1 - 10
of
21
A Concurrent Object Calculus: Reduction and Typing
- HLCL'98 TO APPEAR
, 1998
"... We obtain a new formalism for concurrent object-oriented languages by extending Abadi and Cardelli's imperative object calculus with operators for concurrency from the-calculus and with operators for synchronisation based on mutexes. Our syntax of terms is extremely expressive; in a precise sense it ..."
Abstract
-
Cited by 77 (5 self)
- Add to MetaCart
We obtain a new formalism for concurrent object-oriented languages by extending Abadi and Cardelli's imperative object calculus with operators for concurrency from the-calculus and with operators for synchronisation based on mutexes. Our syntax of terms is extremely expressive; in a precise sense it unifies notions of expression, process, store, thread, and configuration. We present a chemical-style reduction semantics, and prove it equivalent to a structural operational semantics. We identify a deterministic fragment that is closed under reduction and show that it includes the imperative object calculus. A collection of type systems for object-oriented constructs is at the heart of Abadi and Cardelli's work. We recast one of Abadi and Cardelli's first-order type systems with object types and subtyping in the setting of our calculus and prove subject reduction. Since our syntax of terms includes both stores and running expressions, we avoid the need to separate store typing from typing of expressions. We translate asynchronous communication channels and the choice-free asynchronous-calculus into our calculus to illustrate its expressiveness; the types of read-only and write-only channels are supertypes of read-write channels.
Bisimulations in the join-calculus
- Theoretical Computer Science
, 1998
"... We propose an object-oriented calculus with internal concurrency and class-based inheritance that is built upon the join calculus. Method calls, locks, and states are handled in a uniform manner, using asynchronous messages. Classes are partial message definitions that can be combined and transforme ..."
Abstract
-
Cited by 48 (7 self)
- Add to MetaCart
We propose an object-oriented calculus with internal concurrency and class-based inheritance that is built upon the join calculus. Method calls, locks, and states are handled in a uniform manner, using asynchronous messages. Classes are partial message definitions that can be combined and transformed. We design operators for behavioral and synchronization inheritance. We also give a type system that statically enforces basic safety properties. Our model is compatible with the JoCaml implementation
Compilation and Equivalence of Imperative Objects
, 1998
"... We adopt the untyped imperative object calculus of Abadi and Cardelli as a minimal setting in which to study problems of compilation and program equivalence that arise when compiling objectoriented languages. We present both a big-step and a small-step substitution-based operational semantics fo ..."
Abstract
-
Cited by 34 (4 self)
- Add to MetaCart
We adopt the untyped imperative object calculus of Abadi and Cardelli as a minimal setting in which to study problems of compilation and program equivalence that arise when compiling objectoriented languages. We present both a big-step and a small-step substitution-based operational semantics for the calculus. Our rst two results are theorems asserting the equivalence of our substitutionbased semantics with a closure-based semantics like that given by Abadi and Cardelli. Our third result is a direct proof of the correctness of compilation to a stack-based abstract machine via a small-step decompilation algorithm. Our fourth result is that contextual equivalence of objects coincides with a form of Mason and Talcott's CIU equivalence; the latter provides a tractable means of establishing operational equivalences. Finally, we prove correct an algorithm, used in our prototype compiler, for statically resolving method osets. This is the rst study of correctness of an object-oriented abstract machine, and of operational equivalence for the imperative object calculus.
PICCOLA - a Small Composition Language
, 1999
"... Although object-oriented languages are well-suited to implement software components, they fail to shine in the construction of component-based applications, largely because object-oriented design tends to obscure a component-based architecture. We propose to tackle this problem by clearly separating ..."
Abstract
-
Cited by 28 (9 self)
- Add to MetaCart
Although object-oriented languages are well-suited to implement software components, they fail to shine in the construction of component-based applications, largely because object-oriented design tends to obscure a component-based architecture. We propose to tackle this problem by clearly separating component implementation and composition. In particular, we claim that application development is best supported by consciously applying the paradigm "Applications = Components + Scripts." In this chapter, we propose PICCOLA, a small "composition language" that embodies this paradigm. PICCOLA models components and compositional abstractions by means of communicating concurrent agents. Flexibility, extensibility, and robustness are obtained by modeling both interfaces of components and the contexts they live in by "forms", a special notion of extensible records. Using a concrete example, we illustrate how PICCOLA offers explicit support for viewing applications as compositions of components and show that separating components from their composition improves maintainability.
Applications = Components + Scripts: A tour of Piccola
, 2000
"... . Piccola is a language for composing applications from software components. It has a small syntax and a minimal set of features needed for specifying different styles of software composition. The core features of Piccola are communicating agents, which perform computations, and forms, which are the ..."
Abstract
-
Cited by 28 (5 self)
- Add to MetaCart
. Piccola is a language for composing applications from software components. It has a small syntax and a minimal set of features needed for specifying different styles of software composition. The core features of Piccola are communicating agents, which perform computations, and forms, which are the communicated values. Forms are a special notion of extensible, immutable records. Forms and agents allow us to unify components, static and dynamic contexts and arguments for invoking services. Through a series of examples, we present a tour of Piccola, illustrating how forms and agents suffice to express a variety of compositional abstractions and styles. 1. Introduction Piccola is intended to be a general-purpose language for software composition. Whereas existing programming languages appear to be suitable for implementing software components, and many scripting languages and fourth-generation languages have been developed to address the needs of particular component models, there has ...
Nominal Calculi for Security and Mobility
- IN PROC. DARPA WORKSHOP ON FOUNDATIONS FOR SECURE MOBILE CODE
, 1997
"... ..."
Towards a Formal Composition Language
- Proceedings of ESEC ’97 Workshop on Foundations of Component-Based Systems
, 1997
"... When do we call a software development environment a composition environment? A composition environment must be built of three parts: i) a reusable component library, ii) a component framework determining the software architecture, and iii) an open and flexible compositionl anguage. Most of the effo ..."
Abstract
-
Cited by 13 (3 self)
- Add to MetaCart
When do we call a software development environment a composition environment? A composition environment must be built of three parts: i) a reusable component library, ii) a component framework determining the software architecture, and iii) an open and flexible compositionl anguage. Most of the effort in component technology was spent on the first two parts. Now it is crucial to address the last part and find an appropriate model to glue existing components together. In this work, we investigate existing component and glue models, define a set of requirements a composition language must fulfill, and report our first results using a prototype implementation of a general-purpose composition language based on the #-calculus.
Recursive Modules for Programming
- In Proc. ICFP’06
, 2006
"... The ML module system is useful for building large-scale programs. The programmer can factor programs into nested and parameterized modules, and can control abstraction with signatures. Yet ML prohibits recursion between modules. As a result of this constraint, the programmer may have to consolidate ..."
Abstract
-
Cited by 12 (8 self)
- Add to MetaCart
The ML module system is useful for building large-scale programs. The programmer can factor programs into nested and parameterized modules, and can control abstraction with signatures. Yet ML prohibits recursion between modules. As a result of this constraint, the programmer may have to consolidate conceptually separate components into a single module, intruding on modular programming. Introducing recursive modules is a natural way out of this predicament. Existing proposals, however, vary in expressiveness and verbosity. In this paper, we propose a type system for recursive modules, which can infer their signatures. Opaque signatures can also be given explicitly, to provide type abstraction either inside or outside the recursion. The type system is provably decidable, and is sound for a call-by-value semantics. We also gives a solution to the expression problem, in support of our design choices. 1 1
Synchronizing Concurrent Objects in the pi-Calculus
, 1997
"... This report is organized as follows: in section 2 we introduce or #-calculus object model followed by a description of McHale's "generic synchronization policies" in section 3. In section 4, we present the integration of the "generic synchronization policies" into our #-calculus based object model. ..."
Abstract
-
Cited by 10 (6 self)
- Add to MetaCart
This report is organized as follows: in section 2 we introduce or #-calculus object model followed by a description of McHale's "generic synchronization policies" in section 3. In section 4, we present the integration of the "generic synchronization policies" into our #-calculus based object model. Section 5 summarizes the main observations and results of our integration. We conclude with some remarks about future work and directions.
Components, Scripts, and Glue: A conceptual framework for software composition
, 1999
"... The last decade has shown that object-oriented technology alone is not enough to cope with the rapidly changing requirements of present-day applications. Typically, objectoriented methods do not lead to designs that make a clear separation between computational and compositional aspects. Component-b ..."
Abstract
-
Cited by 7 (0 self)
- Add to MetaCart
The last decade has shown that object-oriented technology alone is not enough to cope with the rapidly changing requirements of present-day applications. Typically, objectoriented methods do not lead to designs that make a clear separation between computational and compositional aspects. Component-based systems, on the other hand, achieve flexibility by clearly separating the stable parts of systems (i.e. the components) from the specification of their composition. Components are black-box entities that encapsulate services behind well-defined interfaces. The essential point is that components are not used in isolation, but according to a software architecture which determines the interfaces that components may have and the rules governing their composition. A component, therefore, cannot be separated from a component framework. Naturally, it is not enough to have components and frameworks, but one needs a way to plug components together. However, one of the main problems with existing languages and systems is that there is no generally accepted definition of how components can be composed. In this thesis, we argue that the flexibility and adaptability needed for component-based applications to cope with changing requirements can be substantially

