Results 1 -
8 of
8
Towards a New Model of Abstraction in the Engineering of Software
- IN PROCEEDINGS INTERNATIONAL WORKSHOP ON NEW MODELS FOR SOFTWARE ARCHITECTURE (IMSA): REFLECTION AND META-LEVEL ARCHITECTURE
, 1992
"... The view of abstraction on which software engineering is based does not support the reality of practic... ..."
Abstract
-
Cited by 40 (0 self)
- Add to MetaCart
The view of abstraction on which software engineering is based does not support the reality of practic...
Towards a New Model of Abstraction
, 1992
"... We now come to the decisive step of mathematical abstraction: we forget about what the symbols stand for... [The mathematician] need not be idle; there are many operations he can carry out with these symbols, without ever having to look at the things they stand for. Hermann Weyl, “The Mathematical W ..."
Abstract
-
Cited by 33 (0 self)
- Add to MetaCart
We now come to the decisive step of mathematical abstraction: we forget about what the symbols stand for... [The mathematician] need not be idle; there are many operations he can carry out with these symbols, without ever having to look at the things they stand for. Hermann Weyl, “The Mathematical Way of Thinking” (This appears at the beginning of the Building Abstractions With Data chapter of “Structure and Interpretation
Rationale for the Design of Persistence and Query Processing Facilities in the Database Programming Language O++
, 1989
"... ODE is a database system and environment based on the object paradigm. It offers one integrated data model for both database and general purpose manipulation. The database is defined, queried, and manipulated in the database programming language O++, an extension of C++. O++ uses the C++ object defi ..."
Abstract
-
Cited by 19 (2 self)
- Add to MetaCart
ODE is a database system and environment based on the object paradigm. It offers one integrated data model for both database and general purpose manipulation. The database is defined, queried, and manipulated in the database programming language O++, an extension of C++. O++ uses the C++ object definition facility, called the class, to provide data encapsulation and multiple inheritance. O++ extends C++ by providing facilities for creating persistent and versioned objects, defining and manipulating sets, organizing persistent objects into clusters, iterating clusters of persistent objects, and associating constraints and triggers with objects. In this paper, we present the O++ facilities for persistence and query processing, the alternatives considered, and the rationale behind the design choices.
Contextual Polymorphism
, 1994
"... Programming languages often provide for various sorts of static type checking as a way of detecting invalid programs. However, statically checked type systems often require unnecessarily specific type information, which leads to frustratingly inflexible languages. Polymorphic type systems restore fl ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Programming languages often provide for various sorts of static type checking as a way of detecting invalid programs. However, statically checked type systems often require unnecessarily specific type information, which leads to frustratingly inflexible languages. Polymorphic type systems restore flexibility by allowing entities to take on more than one type. This thesis discusses polymorphism in statically typed programming languages. It provides precise definitions of the term "polymorphism" and for its varieties, "ad-hoc polymorphism", "universal polymorphism", "inclusion polymorphism", and "parametric polymorphism", and surveys and compares many existing mechanisms for providing polymorphism in programming languages. Finally, it introduces a new polymorphism mechanism, contextual polymorphism. Contextual polymorphism is a variant of parametric polymorphism that is based on contexts, which are abstractions of collections of declarations, and assertions, which link polymorphic routin...
What A Metaobject Protocol Based Compiler Can Do For Lisp," Xerox PARC technical report
, 1994
"... A new kind of metaobject protocol, that controls the compilation of programs, allows users to participate in the compilation in a principled and modular way. Such a compiler makes it possible to program in a high-level language and still maintain control over crucial implementation issues. This resu ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
A new kind of metaobject protocol, that controls the compilation of programs, allows users to participate in the compilation in a principled and modular way. Such a compiler makes it possible to program in a high-level language and still maintain control over crucial implementation issues. This result is that a number of simple and elegant Scheme programs can be compiled as efficiently as if they had been written with special purpose primitives. 1
Towards Optimizing Code Generation by Domain-Sensitive Macro Expansion
, 1997
"... : Many modern code generation methods use tree pattern matching with dynamic programming. However, especially in the case of an irregular special-purpose processor architecture their lack of transparency and stability may be problematic: it is difficult to predict the exact code generation result in ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
: Many modern code generation methods use tree pattern matching with dynamic programming. However, especially in the case of an irregular special-purpose processor architecture their lack of transparency and stability may be problematic: it is difficult to predict the exact code generation result in advance, and the effects of a modification in the code generation rules may be surprisingly wide. In contrast, macro expansion techniques are intuitively transparent. When global variables are disallowed, macro expansion typically has the Church-Rosser property: the final expansion result is independent of the expansion order of the individual intermediate macro calls. Besides enabling parallel implementation, order-independence means stability: the effects of modifying a macro definition are guaranteed to remain local. The locality is actually the problem with macro expansion; code optimization is improved when an assembly language macro is sensitive to its context. For instance, it should...
Compilation Strategies as Objects
, 1994
"... In this paper we present an overview of the metaobject protocol approach to compilation. We take the position that object orientation in a compiler can be put to effective use in opening up the compiler for modification by the user. Interestingly, the natural scopes of effect of user intervention do ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
In this paper we present an overview of the metaobject protocol approach to compilation. We take the position that object orientation in a compiler can be put to effective use in opening up the compiler for modification by the user. Interestingly, the natural scopes of effect of user intervention don't respect syntactic boundaries, so we require objects that are not just elements of the abstract syntax tree. We introduce a new kind of intermediate object for the process of compilation so that user modification of compilation strategies can be carried out in a coherent manner. We give some examples of user customizations, and outline the architecture of our Scheme compiler based on these principles.
Functions, Frames, and Interactions -- completing a λ-calculus-based purely functional language with respect to programming-in-the-large and interactions with runtime environments
, 1998
"... The original aim of the work that led to this dissertation was to extend an existing, purely functional language with facilities for input/output and modular programming. The language is based on an untyped -calculus, i.e., program execution is defined as program transformation according to a fixed ..."
Abstract
- Add to MetaCart
The original aim of the work that led to this dissertation was to extend an existing, purely functional language with facilities for input/output and modular programming. The language is based on an untyped -calculus, i.e., program execution is defined as program transformation according to a fixed set of reduction rules including fi-reduction. Consistently, the implementation comprises an interactive reduction system which is integrated with a syntax-oriented editor: any sub-expression or program result can be submitted for (stepwise) reduction. There is no distinguished main program, no `global' environment and no explicit static part of the language -- in particular, there is no static type system. It is therefore not clear how to add one of the known solutions for input/output or modular programming to such a programming environment. Furthermore, simply adding features to the language would lead to a complex language design with weakly integrated parts, thus losing much of the appe...

