Metaobject protocols: why we want them and what else they can do

All rights reserved. No part of this book may be reproduced in any form by any electronic or mechanical means (including photocopying, recording, or information storage and retrieval) without permission in writing from the publisher. Originally conceived a s a n e at idea that could help solve problems in the design and implementation of CLOS, the metaobject protocol framework now appears to have applicability to a wide range of problems that come up in high-level languages. This chapter sketches this wider potential, by drawing an analogy to ordinary language design, by presenting some early design principles, and by presenting an overview of three new metaobject protcols we have designed that, respectively, control the semantics of Scheme, the compilation of Scheme, and the static parallelization of Scheme programs.

[1]  Daniel P. Friedman,et al.  Quasi-static scoping: sharing variable bindings across multiple lexical scopes , 1993, POPL '93.

[2]  Rajive L. Bagrodia,et al.  Efficient Implementation of high-level parallel programs , 1991, ASPLOS IV.

[3]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[4]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[5]  Greg Nelson,et al.  Systems programming in modula-3 , 1991 .

[6]  Pattie Maes Concepts and experiments in computational reflection , 1987, OOPSLA 1987.

[7]  Gregor Kiczales,et al.  Efficient method dispatch in PCL , 1990, LISP and Functional Programming.

[8]  Monica S. Lam,et al.  Coarse-grain parallel programming in Jade , 1991, PPOPP '91.

[9]  Luis Rodriguez Coarse-Grained Parallelism Using Metaobject Protocols , 1991 .

[10]  Gregor Kiczales,et al.  Issues in the Design and Documentation of Class Libraries , 1992, OOPSLA.

[11]  Microcomputer Standards Subcommittee IEEE standard for the Scheme programming language , 1991 .

[12]  Gregor Kiczales,et al.  Towards a new model of abstraction in software engineering , 1991, Proceedings 1991 International Workshop on Object Orientation in Operating Systems.

[13]  Niklaus Wirth,et al.  On the Design of Programming Languages , 1974, IFIP Congress.

[14]  Amin Vahdat,et al.  The Design of a Metaobject Protocol Controlling Behavior of a Scheme Interpreter , 1993 .

[15]  Daniel G. Bobrow,et al.  CommonLoops: Merging Lisp and Object-Oriented Programming , 1986, OOPSLA.

[16]  Eric A. Brewer,et al.  PRELUDE: A System for Portable Parallel Software , 1992, PARLE.