Title :
Reflections on metaprogramming
Author :
Lee, Arthur H. ; Zachary, Joseph L.
Author_Institution :
Dept. of Comput. Sci., Korea Univ., Seoul, South Korea
fDate :
11/1/1995 12:00:00 AM
Abstract :
By encapsulating aspects of language semantics within a set of default classes and allowing the programmer to derive new versions, object-oriented languages whose semantics can be tailored to the needs of individual programmers have been provided. The degree to which such languages are simultaneously flexible and efficient is an open question. We describe our experience with using this technique to incorporate transparent support for persistence into the Common Lisp Object System via its metaobject protocol, an open implementation based on reflection. For many aspects of our implementation the metaobject protocol was perfectly suitable. In other cases we had to choose between extending the protocol, requiring the application programmer to employ special idioms, and tolerating a large performance penalty. Based on our experience we evaluate the metaobject protocol, propose some improvements and extensions, and present performance measurements that reveal the need for improved language implementation techniques
Keywords :
LISP; data encapsulation; object-oriented languages; object-oriented programming; software performance evaluation; Common Lisp Object System; default classes; encapsulation; language semantics; metaobject protocol; metaprogramming; object oriented programming; object-oriented languages; performance measurements; performance penalty; persistence; reflection; Cities and towns; Computer languages; Computer science; Design automation; Electronic switching systems; Helium; Object oriented programming; Programming profession; Protocols; Reflection;
Journal_Title :
Software Engineering, IEEE Transactions on