Results 1 - 10
of
48
Aspect-Oriented Programming is Quantification and Obliviousness
, 2000
"... This paper proposes that the distinguishing characteristic of Aspect-Oriented Programming (AOP) systems is that they allow programming by making quantified programmatic assertions over programs written by programmers oblivious to such assertions. Thus, AOP systems can be analyzed with respect to thr ..."
Abstract
-
Cited by 243 (7 self)
- Add to MetaCart
This paper proposes that the distinguishing characteristic of Aspect-Oriented Programming (AOP) systems is that they allow programming by making quantified programmatic assertions over programs written by programmers oblivious to such assertions. Thus, AOP systems can be analyzed with respect to three critical dimensions: the kinds of quantifications allowed, the nature of the actions that can be asserted, and the mechanism for combining base-level actions with asserted actions. Consequences of this perspective are the recognition that certain systems are not AOP and that some mechanisms are expressive enough to allow programming an AOP system within them. A corollary is that while AOP can be applied to Object-Oriented Programming, it is an independent concept applicable to other programming styles. 1. Introduction This paper is about Aspect-Oriented Programming (AOP) qua programming language. We are interested in determining what makes a language AOP. This work was prompted by a que...
The mystery of the tower revealed: A non-reflective description of the reflective tower
- Lisp and Symbolic Computation
, 1988
"... In an important series of papers [8, 9], Brian Smith has discussed the nature of programs that know about their text and the context in which they are executed. He called this kind of knowledge reflection. Smith proposed a programming language, called 3-LISP, which embodied such self-knowledge in th ..."
Abstract
-
Cited by 68 (7 self)
- Add to MetaCart
In an important series of papers [8, 9], Brian Smith has discussed the nature of programs that know about their text and the context in which they are executed. He called this kind of knowledge reflection. Smith proposed a programming language, called 3-LISP, which embodied such self-knowledge in the domain of metacircular interpreters. Every 3-LISP program is interpreted by a metacircular interpreter, also written in 3-LISP. This gives rise to a picture of an infinite tower of metacircular interpreters, each being interpreted by the one above it. Such a metaphor poses a serious challenge for conventional modes of understanding of programming languages. In our earlier work on reflection [4], we showed how a useful species of reflection could be modeled without the use of towers. In this paper, we give a semantic account of the reflective tower. This account is self-contained in the sense that it does not employ reflection to explain reflection. 1. Modeling reflection Reflective programming languages were introduced in [8, 9] to study programs that need knowledge of their own behavior. In artificial intelligence, this kind of knowledge is needed, for example, in programs that must explain their behavior to
Developing a Reflective Model of Collaborative Systems
- ACM Transactions on Computer-Human Interaction
, 1995
"... Recent years have seen a shift in perception of the nature of HCI and interactive systems. As interface work has increasingly become a focus of attention for the social sciences, we have expanded our appreciation of the importance of issues such as work practice, adaptation, and evolution in interac ..."
Abstract
-
Cited by 59 (10 self)
- Add to MetaCart
Recent years have seen a shift in perception of the nature of HCI and interactive systems. As interface work has increasingly become a focus of attention for the social sciences, we have expanded our appreciation of the importance of issues such as work practice, adaptation, and evolution in interactive systems. The reorientation in our view of interactive systems has been accompanied by a call for a new model of design centered around user needs and participation. This article argues that a new process of design is not enough and that the new view necessitates a similar reorientation in the structure of the systems we build. It outlines some requirements for systems that support a deeper conception of interaction and argues that the traditional system design techniques are not suited to creating such systems. Finally, using examples from ongoing work in the design of an open toolkit for collaborative applications, it illustrates how the principles of computational reflection and metaobject protocols can lead us toward a new model based on open abstraction that holds great promise in addressing these issues.
RbCl: A Reflective Object-Oriented Concurrent Language without a Run-time Kernel
- IN PROCEEDINGS OF INTERNATIONAL WORKSHOP ON NEW MODELS FOR SOFTWARE ARCHITECTURE (IMSA): REFLECTION AND META-LEVEL ARCHITECTURE
, 1992
"... We propose a reflective object-oriented concurrent language RbCl which has no run-time kernel. That is to say, all the behavior of RbCl except for what is restricted by the operating system and hardware can be modified/extended by the user. RbCl runs efficiently in a distributed environment and is i ..."
Abstract
-
Cited by 34 (3 self)
- Add to MetaCart
We propose a reflective object-oriented concurrent language RbCl which has no run-time kernel. That is to say, all the behavior of RbCl except for what is restricted by the operating system and hardware can be modified/extended by the user. RbCl runs efficiently in a distributed environment and is intended for practical use. The execution of an RbCl program is performed by a metasystem that consists of metalevel objects. All the features of RbCl including concurrent execution, inter-node communication, and even reflective facilities themselves are realized by the metalevel objects, which are modifiable and extendable. Important metalevel objects are called system objects, that are registered in system object tables. The user can change the behavior of the metasystem by replacing elements of system object tables with user-defined objects. RbCl also provides a novel feature called linguistic symbiosis for metalevel objects. All the metalevel objects in the initial RbCl metasystem are act...
Reflection in logic, functional and object-oriented programming: a Short Comparative Study
- In IJCAI '95 Workshop on Reflection and Metalevel Architectures and their Applications in AI
, 1995
"... Reflection is a wide-ranging concept that has been studied independently in many different areas of science in general, and computer science in particular. Even in the sub-area of programming languages, it has been applied to different paradigms, especially the logic, functional and objectoriented o ..."
Abstract
-
Cited by 31 (1 self)
- Add to MetaCart
Reflection is a wide-ranging concept that has been studied independently in many different areas of science in general, and computer science in particular. Even in the sub-area of programming languages, it has been applied to different paradigms, especially the logic, functional and objectoriented ones. Partly because of different past influences, but also because researchers in these communities scarcely talk to each others, concepts have evolved separately, sometimes to the point where it is hard for people in one community to recognize similarities in the work of others, not to speak about cross-fertilization among them. In this paper, we propose a synthesis covering mainly the application of computation reflection to programming languages. We compare the different approaches and try to identify similar concepts hidden behind different names or constructs. We also point out the different emphasis that has been given to different concepts in each of them. We do not claim neither comp...
Reflection on a legacy transaction processing monitor
- In Proceedings Reflection '96
, 1996
"... In this paper we describe our experience applying the concepts of reflection to a legacy transaction processing (TP) monitor in order to support the implementation of extended transaction models. In the past ten years, numerous extended transaction models have been proposed to address the challen ..."
Abstract
-
Cited by 16 (0 self)
- Add to MetaCart
In this paper we describe our experience applying the concepts of reflection to a legacy transaction processing (TP) monitor in order to support the implementation of extended transaction models. In the past ten years, numerous extended transaction models have been proposed to address the challenges posed by new advanced applications. Few practical implementations of these extended transaction models exist and none are being used in a commercial TP monitor. We believe the reason for this state of affairs is that the interface and functionality of commercial TP monitors is "locked in" to a fixed transaction model. We have developed the Reflective Transaction Framework as a practical method to implement extended transaction models on a commercial TP monitor. The design of our framework is based on the principles of computational reflection, and in particular open implementation.
Environments as First Class Objects
- In th ACM Symposium on Principle of Programming Languages Conference
, 1987
"... We describe a programming language called Symmetric Lisp that treats environments as firstclass objects. Symmetric Lisp allows programmers to write expressions that evaluate to environments, and to create and denote variables and constants of type environment as well. One consequence is that the ro ..."
Abstract
-
Cited by 16 (4 self)
- Add to MetaCart
We describe a programming language called Symmetric Lisp that treats environments as firstclass objects. Symmetric Lisp allows programmers to write expressions that evaluate to environments, and to create and denote variables and constants of type environment as well. One consequence is that the roles filled in other languages by a variety of limited, special purpose environment forms like records, structures, closures, modules, classes and abstract data types are filled instead by a single versatile and powerful structure. In addition to being its fundamental structuring tool, environments also serve as the basic functional object in the language. Because the elements of an environment are evaluated in parallel, Symmetric Lisp is a parallel programming language; because they may be assembled dyamically as well as statically, Symmetric Lisp accomodates an unusually flexible and simple (parallel) interpreter as well as other historysensitive applications requiring dynamic environments. We show that firstclass environments bring about fundamental changes in a language's structure: conventional distinctions between declarations and expressions, data structures and program structures, passive modules and active processes disappear. We argue that the resulting language is clean, simple and powerful.
Source-Code Instrumentation and Quantification of Events
"... assertions over programs that otherwise are not annotated to receive these assertions. Varieties of AOP systems are characterized by which quantified assertions they allow, what they permit in the actions of the assertions (including how the actions interact with the base code), and what mechanisms ..."
Abstract
-
Cited by 14 (3 self)
- Add to MetaCart
assertions over programs that otherwise are not annotated to receive these assertions. Varieties of AOP systems are characterized by which quantified assertions they allow, what they permit in the actions of the assertions (including how the actions interact with the base code), and what mechanisms they use to achieve the overall eftct. Here, we argue that all quantification is over dynamic events, and describe our preliminary work in developing a system that maps dynamic events to transformations over source code. We discuss possible applications of this system, particularly with respect to debugging concurrent systems.
The Many Faces of Introspection
, 1992
"... Introspection or the ability to observe one's own behavior is one of the most powerful capabilities of human intelligence; it is the basis for understanding and improvement of one's behavior and of human progress. Similarly, introspective computer systems, introduced in this thesis, examine, reason ..."
Abstract
-
Cited by 14 (9 self)
- Add to MetaCart
Introspection or the ability to observe one's own behavior is one of the most powerful capabilities of human intelligence; it is the basis for understanding and improvement of one's behavior and of human progress. Similarly, introspective computer systems, introduced in this thesis, examine, reason about, and change their own behavior in powerful new ways. Because the complexity of computers is rapidly increasing, yet is restricted by limited human resources, the most attractive quality of introspective computers is their ability to manage this growing complexity themselves. Self-managing computer systems would greatly expand the rational power and complexity of computer systems that can be successfully built. The main difficulty in constructing introspective computer systems is enabling the system to obtain a description of its complete behavior in a dynamic and unobtrusive way. This thesis proposes the partition of the system into two threads of control. The first thread performs the...
Avoiding Confusion in Metacircularity: The Meta-Helix
- in Proc. of the 2nd Int’l Symp. on Object Technologies for Advanced Software (ISOTAS), LNCS 1049
, 1996
"... A system with a metaobject protocol (MOP) allows programmers to extend it and then use the extended system as naturally as the original non-extended one. Such metaobject protocols often use a metacircular architecture to make the extensions easier to write. Unfortunately, this use of metacircularity ..."
Abstract
-
Cited by 14 (1 self)
- Add to MetaCart
A system with a metaobject protocol (MOP) allows programmers to extend it and then use the extended system as naturally as the original non-extended one. Such metaobject protocols often use a metacircular architecture to make the extensions easier to write. Unfortunately, this use of metacircularity can lead to problems stemming from a conflation of the extended and non-extended functionalities. We present a new architecture, called the meta-helix, that preserves the advantages of metacircularity but also addresses the problems with conflation. 1 Introduction A system with a metaobject protocol (MOP) allows programmers to extend it, and then use the extended system as naturally as the original non-extended system. Metaobject protocols have been designed and implemented for programming languages [KdRB91, Mae87, WY88, MWY91], window systems [Rao91], and operating systems [Yok92, YTR + 87, MA90, Mae96]. A common element of metaobject protocol design is the use of metacircularity to all...

