Results 1 - 10
of
13
SELF: The power of simplicity
, 1987
"... Abstract. SELF is an object-oriented language for exploratory programming based on a small number of simple and concrete ideas: prototypes, slots, and behavior. Prototypes combine inheritance and instantiation to provide a framework that is simpler and more flexible than most object-oriented languag ..."
Abstract
-
Cited by 520 (16 self)
- Add to MetaCart
Abstract. SELF is an object-oriented language for exploratory programming based on a small number of simple and concrete ideas: prototypes, slots, and behavior. Prototypes combine inheritance and instantiation to provide a framework that is simpler and more flexible than most object-oriented languages. Slots unite variables and procedures into a single construct. This permits the inheritance hierarchy to take over the function of lexical scoping in conventional languages. Finally, because SELF does not distinguish state from behavior, it narrows the gaps between ordinary objects, procedures, and closures. SELF’s simplicity and expressiveness offer new insights into objectoriented computation. To thine own self be true. —William Shakespeare 1
A Denotational Semantics of Inheritance
, 1989
"... This thesis develops a semantic model of inheritance and investigates its applications for the analysis and design of programming languages. Inheritance is a mechanism for incremental programming in the presence of self-reference. This interpretation of inheritance is formalized using traditional te ..."
Abstract
-
Cited by 137 (6 self)
- Add to MetaCart
This thesis develops a semantic model of inheritance and investigates its applications for the analysis and design of programming languages. Inheritance is a mechanism for incremental programming in the presence of self-reference. This interpretation of inheritance is formalized using traditional techniques of fixed-point theory, resulting in a compositional model of inheritance that is directly applicable to object-oriented languages. Novel applications of inheritance revealed by the model are illustrated to show that inheritance has wider significance beyond object-oriented class inheritance. Constraints induced by self-reference and inheritance are investigated using type theory and yield a formal characterization of abstract classes and a demonstration that the subtype relation is a direct consequence of the basic mechanism of inheritance. The model is proven equivalent to the operational semantics of inheritance embodied by the interpreters of object-oriented languages like Smalltalk. Concise descriptions of inheritance behavior in several object-oriented languages, including Smalltalk, Beta, Simula, and Flavors, are presented in a common framework that facilitates direct comparison of their features.
A Denotational Semantics of Inheritance and its Correctness
, 1995
"... This paper presents a denotational model of inheritance. The model is based on an intuitive motivation of inheritance as a mechanism for deriving modified versions of recursive definitions. The correctness of the model is demonstrated by proving it equivalent to an operational semantics of inheritan ..."
Abstract
-
Cited by 129 (9 self)
- Add to MetaCart
This paper presents a denotational model of inheritance. The model is based on an intuitive motivation of inheritance as a mechanism for deriving modified versions of recursive definitions. The correctness of the model is demonstrated by proving it equivalent to an operational semantics of inheritance based upon the method lookup algorithm of object-oriented languages.
On the Notion of Inheritance
- ACM Computing Surveys
, 1996
"... One of the most intriguing—and at the same time most problematic—notions in object-oriented programming is inheritance. Inheritance is commonly regarded as the feature that distinguishes object-oriented programming from other modern programming paradigms, but researchers rarely agree on its meaning ..."
Abstract
-
Cited by 106 (0 self)
- Add to MetaCart
One of the most intriguing—and at the same time most problematic—notions in object-oriented programming is inheritance. Inheritance is commonly regarded as the feature that distinguishes object-oriented programming from other modern programming paradigms, but researchers rarely agree on its meaning and usage.
Metaclasses are first class: the ObjVLisp model
- In Object Oriented Programming Systems Languages and Applications
, 1987
"... This paper shows how an attempt at a uniform and reflective definition resulted in an open-ended system supporting ObjVlisp, which we use to simulate object-oriented language extensions. We propose to unify Smalltalk classes and their terminal instances. This unification allows us to treat a class a ..."
Abstract
-
Cited by 105 (8 self)
- Add to MetaCart
This paper shows how an attempt at a uniform and reflective definition resulted in an open-ended system supporting ObjVlisp, which we use to simulate object-oriented language extensions. We propose to unify Smalltalk classes and their terminal instances. This unification allows us to treat a class as a “first class citizen”, to give a circular definition of the first metaclass, to access to the metaclass level and finally to control the instantiation link. Because each object is an instance of another one and because a metaclass is a real class inheriting from another one, the metaclass links can be created indefinitely. This uniformity allows us to define the class variables at the metalevel thus suppressing the Smalltalk- ambiguity between class variables and instance variables: in our model the instance variables of a class are the class variables of its instances.
Strongtalk: Typechecking Smalltalk in a Production Environment
, 1993
"... Strongtalk TM is a typechecker for a downward compatible Smalltalk dialect. It is designed for large-scale production software development, and incorporates a strong, modern structural type system. It not only separates the notions of type and class, but also deals with the more difficult issue of s ..."
Abstract
-
Cited by 74 (3 self)
- Add to MetaCart
Strongtalk TM is a typechecker for a downward compatible Smalltalk dialect. It is designed for large-scale production software development, and incorporates a strong, modern structural type system. It not only separates the notions of type and class, but also deals with the more difficult issue of separating inheritance and subtyping using the notion of inherited types [CHC90, Bru93a] to preserve encapsulation. Strongtalk integrates inherited types, metaclasses, blocks and polymorphic methods into a highly usable, full-scale language. 1 Introduction It is widely accepted that a strong, static type system for a programming language has important benefits, including increased reliability, readability, and (potentially) performance. However, an inadequate type system can constrain the flexibility of a language, and thus its expressiveness. Static typing allows the type safety of source code to be completely determined before execu- 0TM Strongtalk is a trademark of Horizon Technologies...
Emerald: A General-Purpose Programming Language
, 1991
"... data types Inheritance Object-based concurrency 1. ..."
Abstract
-
Cited by 29 (3 self)
- Add to MetaCart
data types Inheritance Object-based concurrency 1.
An Overview of the n-dim Environment
, 1993
"... The premise of our work is that designers, in the process of doing their work, create models of various kinds, for various purposes, and that it is the negotiation of the structure and content of these models that comprises the bulk of the task of doing design. We give here an overview of a framewor ..."
Abstract
-
Cited by 21 (17 self)
- Add to MetaCart
The premise of our work is that designers, in the process of doing their work, create models of various kinds, for various purposes, and that it is the negotiation of the structure and content of these models that comprises the bulk of the task of doing design. We give here an overview of a framework for enabling designers to capture and structure as much of the information they use and generate as is possible. We have designed and implemented such a system for creating models in a computer that can be shared with other designers in the course of an ongoing design, made persistent for future recall, classified and categorized so as to facilitate both the study of how design is done in a given organization and the study of design in general.
A Uniform Model for Object-Oriented Languages Using the Class Abstraction
, 1987
"... ion Jean-Pierre BRIOT & Pierre COINTE LITP - Universit'e Paris-VI & Rank Xerox France 4, place Jussieu & 12, place de l'Iris 75005 Paris & 92071 La D'efense briot@litp.ibp.fr & pc@litp.ibp.fr in Proceedings of the Tenth International Joint Conference on Artificial Intelligence (IJCAI'87), Vol. 1, ..."
Abstract
-
Cited by 14 (2 self)
- Add to MetaCart
ion Jean-Pierre BRIOT & Pierre COINTE LITP - Universit'e Paris-VI & Rank Xerox France 4, place Jussieu & 12, place de l'Iris 75005 Paris & 92071 La D'efense briot@litp.ibp.fr & pc@litp.ibp.fr in Proceedings of the Tenth International Joint Conference on Artificial Intelligence (IJCAI'87), Vol. 1, pages 40--43, August 1987. Abstract One of the main goals of object-oriented languages (OOLs) is to unify their universe: "every entity of the language is an object." The class concept, however, usually does not follow this wish: a class being not a real object, i.e., created from a class. The metaclass concept introduced in Smalltalk-80, attempts to give classes a first class citizenship but complicates the instantiation scheme without solving its fundamental limitations: the only partial specification of the class at the metaclass level, and the fixed number of meta-levels. Some more recent approaches, as in Loops and then CommonLoops, tend towards a better unification, but reveal the s...
Reflection for Statically Typed Languages
- In: Proceedings of 12th European Conference on Object-Oriented Programming
, 1998
"... An object-oriented language that permits changing the beha ior of a class or of a single object is said to support computational reflection. Existing reflecti e facilities in object-oriented languages are either complex, type unsafe, or ha e a large performance penalty. We propose a simple ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
An object-oriented language that permits changing the beha ior of a class or of a single object is said to support computational reflection. Existing reflecti e facilities in object-oriented languages are either complex, type unsafe, or ha e a large performance penalty. We propose a simple, easy-to-und rstand and statically typed mod el that captures much of the functionalities of other reflecti e facilities. It brings the power of reflection to the world of type safe and e#cient languages.

