Many object-oriented languages used in practice descend from Algol. With this motivation, we study the theoretical issues underlying such languages via the theory of Algol-like languages. It is shown that the basic framework of this theory extends cleanly and elegantly to the concepts of objects and classes. Moreover, a clear correspondence emerges between classes and abstract data types, whose theory corresponds to that of existential types. Equational and Hoare-like reasoning methods, and relational parametricity provide powerful formal tools for reasoning about Algol-like object-oriented programs. Key Words: Algol-like languages, relational parametricity, specication logic, objectoriented programming, semantics.
|
2762
|
Communication and Concurrency
– Milner
- 1989
|
|
795
|
A theory of objects
– Abadi, Cardelli
- 1996
|
|
762
|
On understanding types, data abstraction, and polymorphism
– Cardelli, Wegner
- 1985
|
|
625
|
Design Patterns
– Gamma, Helm, et al.
- 1995
|
|
556
|
Structure and Interpretation of Computer Programs
– Abelson, Sussman, et al.
- 1984
|
|
500
|
A semantics for multiple inheritance
– Cardelli
- 1988
|
|
348
|
A behavioral notion of subtyping
– Liskov, Wing
- 1994
|
|
342
|
Proofs of correctness of data representations
– Hoare
- 1972
|
|
277
|
Abstract types have existential type
– Mitchell, Plotkin
- 1988
|
|
266
|
Types, abstraction, and parametric polymorphism
– Reynolds
- 1983
|
|
250
|
Foundations for Programming Languages
– Mitchell
- 1996
|
|
243
|
Inheritance is not subtyping
– Cook, Hill, et al.
- 1990
|
|
238
|
Categories for the Working Mathematician
– MacLane
- 1971
|
|
223
|
Event structures
– Winskel
- 1986
|
|
182
|
Simple type-theoretic foundations for object-oriented programming
– Pierce, Turner
- 1994
|
|
141
|
An algebraic definition of simulation between programs
– Milner
- 1971
|
|
140
|
PolyTOIL: A type-safe polymorphic object-oriented language
– Bruce, Schuett, et al.
- 1995
|
|
134
|
Designing an object-oriented programming language with behavioural subtyping
– America
- 1990
|
|
133
|
A Denotational Semantics of Inheritance
– Cook
- 1989
|
|
133
|
The essence of Algol
– Reynolds
- 1981
|
|
132
|
Simula: an Algol-based simulation language
– Dahl, Nygaard
- 1966
|
|
125
|
A logic of object-oriented programs
– Abadi, Leino
- 1997
|
|
114
|
Syntactic control of interference
– Reynolds
- 1978
|
|
110
|
Comparing object encodings
– Bruce, Cardelli, et al.
- 1999
|
|
109
|
A logic for parametric polymorphism
– Plotkin, Abadi
- 1993
|
|
103
|
Parametricity and local variables
– O'Hearn, Tennent
- 1995
|
|
86
|
Towards fully abstract semantics for local variables: Preliminary report
– Meyer, Sieber
- 1988
|
|
83
|
Objects as closures: Abstract semantics of object-oriented languages
– Reddy
- 1998
|
|
76
|
FUDGETS - A Graphical User interface in a Lazy Functional Language
– Carlsson, Hallgren
- 1993
|
|
70
|
On the Refinement Calculus
– Morgan, Vickers
- 1993
|
|
60
|
Higher-order subtyping
– Pierce, Steffen
- 1994
|
|
49
|
From Algol to polymorphic linear lambda-calculus
– O’Hearn, Reynolds
|
|
48
|
Modular Specification and Verification of Object-Oriented Programs
– Leavens
- 1991
|
|
47
|
Abstract data types and software validation
– Guttag, Horowitz, et al.
- 1978
|
|
45
|
Theoretical Aspects of Object-Oriented Programming
– Gunter, Mitchell, et al.
- 1994
|
|
43
|
Data refinement refined
– He, Hoare, et al.
- 1986
|
|
42
|
A calculus for concurrent objects
– Blasio, Fisher
- 1996
|
|
41
|
Behavioral Correctness of Data Representations
– Schoett
- 1990
|
|
39
|
Syntactic control of interference revisited
– O’Hearn, Takeyama, et al.
- 1995
|
|
39
|
Idealized algol and its specification logic
– Reynolds
- 1997
|
|
38
|
On the relationship between classes, objects, and data abstraction. Theory and Practice of Object Systems
– Fisher, Mitchell
- 1998
|
|
36
|
Assignments for applicative languages
– Swarup, Reddy, et al.
|
|
35
|
Call by name, assignment and the lambda calculus
– Odersky, Rabin, et al.
- 1993
|
|
34
|
Two semantic models of object-oriented languages
– Kamin, Reddy
|
|
34
|
Semantics of local variables
– O'Hearn, Tennent
- 1992
|
|
34
|
Categorical models for local names
– Stark
- 1996
|
|
32
|
Statically typed friendly functions via partially abstract types
– Pierce, Turner
- 1993
|
|
29
|
An imperative object calculus. Theory and Practice of Object Systems
– Abadi, Cardelli
- 1996
|
|
29
|
Reasoning and refinement in object-oriented specification languages
– Lano, Haughton
- 1992
|
|
26
|
Algol-like Languages (Two volumes
– O’Hearn, Tennent
- 1997
|