scholarly journals On theories of names and references in formal languages and implications for functional and object-oriented programming

2021 ◽  
Author(s):  
Alexei Igorevich Adamovich ◽  
Andrei Valentinovich Klimov

The long-standing problem of adequate formalization of local names in mathematical formulae and semantics of references in object-oriented languages taken “as is” without objects, is discussed. Reasons why the existing approaches cannot be considered suitable solutions, are explained. An introduction to the relatively recent works on the theories of names and references of the group headed by Andrew Pitts, is given. The notion of referential transparency, in which contextual equivalence is used instead of the usual equality of values, is analyzed. This is the main property, which these theories are based upon: it is preserved when a purely functional language is extended with names and references as data. It is argued that such referential transparency, along with many others, can be preserved for mutable objects that change to a limited extent. This leads to a model of computation between functional and object-oriented ones, allowing for a deterministic parallel implementation.

1991 ◽  
Vol 20 (355) ◽  
Author(s):  
Jens Palsberg ◽  
Michael I. Schwartzbach

We develop a theory of statically typed object-oriented languages. It represents classes as labeled, regular trees, types as finite sets of classes, and subclassing as a partial order on trees. We show that our subclassing order strictly generalizes inheritance, and that a novel genericity mechanism arises as an order-theoretic complement. This mechanism, called class substitution, is pragmatically useful and can be implemented efficiently.


1990 ◽  
Vol 19 (305) ◽  
Author(s):  
Jens Palsberg ◽  
Michael I. Schwartzbach

We introduce substitution polymorphism as a new basis for typed object-oriented languages. While avoiding subtypes and polymorphic types, this mechanism enables optimal static type-checking of generic classes and polymorphic functions. The novel idea is to view a class as having a family of implicit subclasses, each of which is obtained through a substitution of types. This allows instantiation of a generic class to be merely subclassing and resolves the problems in the <em> Eiffel</em> type system reported by Cook. All subclasses, including the implicit ones, can reuse the code implementing their superclass.


1990 ◽  
Vol 19 (341) ◽  
Author(s):  
Jens Palsberg ◽  
Michael I. Schwartzbach

We present a new type system for object-oriented languages with assignments. Types are sets of classes, subtyping is set inclusion, and genericity is class substitution. The type system enables separate compilation, and unifies, generalizes, and simplifies the type systems underlying SIMULA/BETA, C++, EIFFEL, and Typed Smalltalk, and the type system with type substitutions proposed by Palsberg and Schwartzbach, Classes and types are both modeled as node-labeled, ordered regular trees; this allows an efficient type-checking algorithm.


1999 ◽  
Vol 9 (4) ◽  
pp. 373-426 ◽  
Author(s):  
ANDREW D. GORDON ◽  
PAUL D. HANKIN ◽  
SØREN B. LASSEN

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 object-oriented languages. We present both a big-step and a small-step substitution-based operational semantics for the calculus. Our first two results are theorems asserting the equivalence of our substitution-based 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 offsets. This is the first study of correctness of an object-oriented abstract machine, and of operational equivalence for the imperative object calculus.


1989 ◽  
Vol 18 (283) ◽  
Author(s):  
Ole Lehrmann Madsen ◽  
Birger Møller-Pedersen

The notations of class, subclass and virtual procedure are fairly well understood and recognized as some of the key concepts in object-oriented programming. The possibility of modifying a virtual procedure in a subclass is a powerful technique for specializing the general properties of the superclass.<p>In most object-oriented languages, the attributes of an object may be references to objects and (virtual) procedures. In Simula and BETA it is also possible to have class attributes. The power of class attributes has not yet been widely recognized. In BETA a class may also have <em>virtual class attributes</em>. This makes it possible to defer part of the specification of a class attribute to a subclass. In this sense virtual classes are analogous to virtual procedures. Virtual classes are mainly interesting within strongly typed languages where they provide a mechanism for defining general parameterized classes such as set, vector and list. In this sense they provide an alternative to generics. Although the notion of virtual class originates from BETA, it is presented as a general language mechanism.</p>


Author(s):  
Didier Casner ◽  
Jean Renaud ◽  
Dominique Knittel

This paper deals with the fast modeling and fast multiobjective optimal design of mechatronic systems. To solve this problem, the object-oriented modeling language Modelica and object-oriented programming language Java have been used to build an innovate software platform. This platform has been designed to allow multidisciplinary design optimization of complex systems using a free platform. This platform only contains open-source tools and frameworks and was validated on an optimization application: the stabilization of a quarter-car system.


Author(s):  
Pedro Delgado-Pérez ◽  
Inmaculada Medina-Bulo ◽  
Juan José Domínguez-Jiménez

Mutation testing is a suitable technique to determine the quality of test suites designed for a certain program. The set of mutation operators and the overall technique should be developed around each programming language in particular. The structures related to the object-oriented paradigm require a tailored analysis addressing them. However, class mutation operators for these languages have not been analyzed at the same extent as traditional operators for procedural languages in the literature. The purpose of the chapter is to look in depth at the development and the current state of mutation testing, and more specifically, with regard to object-oriented programming languages.


Author(s):  
Pedro Delgado-Pérez ◽  
Inmaculada Medina-Bulo ◽  
Juan José Domínguez-Jiménez

Mutation testing is a suitable technique to determine the quality of test suites designed for a certain program. The set of mutation operators and the overall technique should be developed around each programming language in particular. The structures related to the object-oriented paradigm require a tailored analysis addressing them. However, class mutation operators for these languages have not been analyzed at the same extent as traditional operators for procedural languages in the literature. The purpose of the chapter is to look in depth at the development and the current state of mutation testing, and more specifically, with regard to object-oriented programming languages.


1997 ◽  
Vol 4 (19) ◽  
Author(s):  
Andrew D. Gordon ◽  
Paul D. Hankin ◽  
Søren B. Lassen

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 object-oriented languages. We present both a big-step and a small-step substitution-based operational semantics for the calculus and prove them equivalent to the closure-based operational semantics given by Abadi and Cardelli. Our first result is a direct proof of the correctness of compilation to a stack-based abstract machine via a small-step decompilation algorithm. Our second 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 offsets. This is the first study of correctness of an object-oriented abstract machine, and of operational equivalence for the imperative object calculus.<br /><br />This report is superseded by BRICS-RS-98-55.


2000 ◽  
Vol 29 (552) ◽  
Author(s):  
Ulrik Pagh Schultz

Object-oriented programming facilitates the development of generic software, but at a cost in terms of performance of the final program. We use partial evaluation to automatically map generic object-oriented software into specific implementations. In this paper we give a concise and formalized description of how partial evaluation specializes an object-oriented program.


Sign in / Sign up

Export Citation Format

Share Document