Results 1  10
of
36
D: A LANGUAGE FRAMEWORK FOR DISTRIBUTED PROGRAMMING
, 1997
"... Two of the most important issues in distributed systems are the synchronization of concurrent threads and the applicationlevel data transfers between execution spaces. At the design level, addressing these issues typically requires analyzing the components under a different perspective than is requ ..."
Abstract

Cited by 158 (8 self)
 Add to MetaCart
Two of the most important issues in distributed systems are the synchronization of concurrent threads and the applicationlevel data transfers between execution spaces. At the design level, addressing these issues typically requires analyzing the components under a different perspective than is required to analyze the functionality. Very often, it also involves analyzing several components at the same time, because of the way those two issues crosscut the units of functionality. At the implementation level, existing programming languages fail to provide adequate support for programming in terms of these different and crosscutting perspectives. The result is that the programming of synchronization and remote data transfers ends up being tangled throughout the components code in more or less arbitrary ways. This thesis presents a language framework called D that untangles the implementation of synchronization
Comparing object encodings
 Journal of Functional Programming, 16:375 – 414
, 2006
"... Recent years have seen the development of several foundational models for statically typed objectoriented programming. But despite their intuitive similarity, di erences in the technical machinery used to formulate the various proposals have made them di cult to compare. Using the typed lambdacalc ..."
Abstract

Cited by 119 (3 self)
 Add to MetaCart
Recent years have seen the development of several foundational models for statically typed objectoriented programming. But despite their intuitive similarity, di erences in the technical machinery used to formulate the various proposals have made them di cult to compare. Using the typed lambdacalculus F! as a common basis, we nowo er a detailed comparison of four models: (1) a recursiverecord encoding similar to the ones used by Cardelli [Car84],
Imperative Objects and Mobile Processes
 MATH. STRUCT. COMPUT. SCI
, 1998
"... An interpretation of Abadi and Cardelli's firstorder Imperative Object Calculus into a typed picalculus is presented. The interpretation validates the subtyping relation and the typing judgements of the Object Calculus, and is computationally adequate. The proof of computational adequacy makes use ..."
Abstract

Cited by 41 (13 self)
 Add to MetaCart
An interpretation of Abadi and Cardelli's firstorder Imperative Object Calculus into a typed picalculus is presented. The interpretation validates the subtyping relation and the typing judgements of the Object Calculus, and is computationally adequate. The proof of computational adequacy makes use of (a picalculus version) of ready simulation, and of a factorisation of the interpretation into a functional part and a very simple imperative part. The interpretation can be used to compare and contrast the Imperative and the Functional Object Calculi, and to prove properties about them, within a unified framework.
TypePreserving Compilation of Featherweight Java
, 2001
"... We present an efficient encoding of core Java constructs in a simple, implementable typed intermediate language. The encoding, after type erasure, has the same operational behavior as a standard implementation using vtables and selfapplication for method invocation. Classes inherit superclass metho ..."
Abstract

Cited by 35 (8 self)
 Add to MetaCart
We present an efficient encoding of core Java constructs in a simple, implementable typed intermediate language. The encoding, after type erasure, has the same operational behavior as a standard implementation using vtables and selfapplication for method invocation. Classes inherit superclass methods with no overhead. We support mutually recursive classes while preserving separate compilation. Our strategy extends naturally to a significant subset of Java, including interfaces and privacy. The formal translation using Featherweight Java allows comprehensible typepreservation proofs and serves as a starting point for extending the translation to new features.
Representing Java Classes in a Typed Intermediate Language
, 1999
"... We propose a conservative extension of the polymorphic lambda calculus (F ! ) as an intermediate language for compiling languages with namebased class and interface hierarchies. Our extension enriches standard F ! with recursive types, existential types, and row polymorphism, but only ordered r ..."
Abstract

Cited by 32 (8 self)
 Add to MetaCart
We propose a conservative extension of the polymorphic lambda calculus (F ! ) as an intermediate language for compiling languages with namebased class and interface hierarchies. Our extension enriches standard F ! with recursive types, existential types, and row polymorphism, but only ordered records with no subtyping. Basing our language on F ! makes it also a suitable target for translation from other higherorder languages; this enables the safe interoperation between classbased and higherorder languages and the reuse of common typedirected optimization techniques, compiler back ends, and runtime support. We present the formal semantics of our intermediate language and illustrate its features by providing a formal translation from a subset of Java, including classes, interfaces, and private instance variables. The translation preserves the namebased hierarchical relation between Java classes and interfaces, and allows access to private instance variables of parameters of ...
TypeTheoretic Methodology For Practical Programming Languages
 DEPARTMENT OF COMPUTER SCIENCE, CORNELL UNIVERSITY
, 1998
"... The significance of type theory to the theory of programming languages has long been recognized. Advances in programming languages have often derived from understanding that stems from type theory. However, these applications of type theory to practical programming languages have been indirect; the ..."
Abstract

Cited by 22 (3 self)
 Add to MetaCart
The significance of type theory to the theory of programming languages has long been recognized. Advances in programming languages have often derived from understanding that stems from type theory. However, these applications of type theory to practical programming languages have been indirect; the differences between practical languages and type theory have prevented direct connections between the two. This dissertation presents systematic techniques directly relating practical programming languages to type theory. These techniques allow programming languages to be interpreted in the rich mathematical domain of type theory. Such interpretations lead to semantics that are at once denotational and operational, combining the advantages of each, and they also lay the foundation for formal verification of computer programs in type theory. Previous type theories either have not provided adequate expressiveness to interpret practical languages, or have provided such expressiveness at the expense of essential features of the type theory. In particular, no previous type theory has supported a notion of partial functions (needed to interpret recursion in practical languages), and a notion of total functions and objects (needed to reason about data values), and an intrinsic notion of equality (needed for most interesting results). This dissertation presents the first type theory incorporating all three, and discusses issues arising in the design of that type theory. This type theory is used as the target of a typetheoretic semantics for a expressive programming calculus. This calculus may serve as an internal language for a variety of functional programming languages. The semantics is stated as a syntaxdirected embedding of the programming calculus into type theory. A critical point arising in both the type theory and the typetheoretic semantics is the issue of admissibility. Admissibility governs what types it is legal to form recursive functions over. To build a useful type theory for partial functions it is necessary to have a wide class of admissible types. In particular, it is necessary for all the types arising in the typetheoretic semantics to be admissible. In this dissertation I present a class of admissible types that is considerably wider than any previously known class.
A simple typed intermediate language for objectoriented languages
 In Proceedings of the 32nd ACM Symposium on Principles of Programming Languages (POPL05
, 2005
"... Traditional class and object encodings are difficult to use in practical typepreserving compilers because of the complexity of the encodings. We propose a simple typed intermediate language for compiling objectoriented languages and prove its soundness. The key ideas are to preserve lightweight no ..."
Abstract

Cited by 18 (6 self)
 Add to MetaCart
Traditional class and object encodings are difficult to use in practical typepreserving compilers because of the complexity of the encodings. We propose a simple typed intermediate language for compiling objectoriented languages and prove its soundness. The key ideas are to preserve lightweight notions of classes and objects instead of compiling them away and to separate namebased subclassing from structurebased subtyping. The language can express standard implementation techniques for both dynamic dispatch and runtime type tests. It has decidable type checking even with subtyping between quantified types with different bounds. Because of its simplicity, the language is a more suitable starting point for a practical typepreserving compiler than traditional encoding techniques.
A Natural Semantics for Eiffel Dynamic Binding
, 1996
"... This article formally defines Eiffel dynamic binding in presence of... ..."
Abstract

Cited by 17 (1 self)
 Add to MetaCart
This article formally defines Eiffel dynamic binding in presence of...
HigherOrder Intersection Types and Multiple Inheritance
, 1995
"... this paper was completed, the metatheory of this system has been studied in much greater detail by Compagnoni [ Compagnoni, 1994, Compagnoni, 1995 ] . A type system combining intersection types with a powerful form of polymorphism is of independent interest. Reynolds [ 1988 ] has argued that interse ..."
Abstract

Cited by 17 (6 self)
 Add to MetaCart
this paper was completed, the metatheory of this system has been studied in much greater detail by Compagnoni [ Compagnoni, 1994, Compagnoni, 1995 ] . A type system combining intersection types with a powerful form of polymorphism is of independent interest. Reynolds [ 1988 ] has argued that intersection types can form the basis of elegant language designs. But his Forsythe language has only a firstorder type system, and thus lacks some of the expressive possibilities of polymorphic languages like ML. Our work represents a step toward a synthesis of these styles of language design. The following section shows some examples of multiple inheritance using a simple highlevel syntax. Section 3, the core of the paper, defines the calculus F
NuprlLight: An implementation framework for higherorder logics
 IN 14TH INTERNATIONAL CONFERENCE ON AUTOMATED DEDUCTION
, 1997
"... Recent developments in higherorder logics and theorem prover design have led to an ..."
Abstract

Cited by 12 (7 self)
 Add to MetaCart
Recent developments in higherorder logics and theorem prover design have led to an