Pattie Maes Concepts and Experiments In

Pattie Maes Concepts and Experiments In

[Maes 1987b] [Tiemann 1988] Pattie Maes Michael D. Tiemann Concepts and Experiments in Solving the RPC problem in GNU C++ Computational Reflection 1988 USENIX C++ Conference OOPSLA '87 Proceedings Denver, CO, October 17-21 1988 Orlando, FL, October 4-8 1977 pages 147-155 [Ungar 1987] [McCullough 1987] David Ungar and Randall B. Smith Paul L. McCullough Self: The Power of Simplicity Transparent Forwarding: First Steps OOPSLA '87 Proceedings OOPSLA '87 Proceedings Orlando, FL, October 4-8 1977 pages 227-242 Orlando, FL, October 4-8 1977 pages 331-341 [Yokote 1986] [Messick 1985] Yasuhiko Yokote and Mario Tokoro Steven L. Messick and Kent L. Beck The Design and Implementation of Active Variables in Smalltalk-80 ConcurrentSmalltalk Technical Report CR-85-09 OOPSLA '86 Proceedings Computer Research Lab, Tektronix, Inc., 1985 Portland, OR, September 29-October 2 1986, pages 331-340 [Pascoe 1986] Geoffrey A. Pascoe [Watanabe 1988] Encapsulators: A New Software Takuo Watanabe and Akinori Yonezawa Paradigm in Smalltalk-80 Reflection in an Object-Oriented Concurrent OOPSLA '86 Proceedings Language Portland, OR, September 29-October 2 1986, OOPSLA '88 Proceedings pages 341-346 San Diego, CA, September 25-30, 1988 pages 306-315 [Smith 1983] Brian Cantwell Smith Reflection and Semantics in Lisp Proceedings of the 1984 ACM Principles of Programming Languages Conference pages 23-35 [Smith 1987] Randall B. Smith Experiences with the Alternate Reality Kit: An Example of the Tension Between Literalism and Magic. CHI+GI 1987 Conference Proceedings [Stefik 1986a] Mark Stefik and Daniel G. Bobrow Object-Oriented Programming: Themes and Variations AI Magazine 6(4): 40-62, Winter, 1986 [Stefik 1986b] M. Stefik, D. Bobrow and K. Kahn Integrating Access-Oriented Programming into a Multiprogramming Environment IEEE Software, 3, 1 (January 1986), 10-18 [Stein 1987] Lynn Andea Stein Delegation is Inhertance OOPSLA '87 Proceedings Orlando, FL, October 4-8 1977 pages 138-146 [Stroustrup 1986] Bjarne Stroustrup The C++ Programming Language Addison-Wesley, Reading, MA, 1986 [Bennett 1987] [Hewitt 1983] John K. Bennett Carl Hewitt and Peter de Jong The Design and Implementation of Analyzing the Role of Description and Actions Distributed Smalltalk in Open Systems OOPSLA '87 Proceedings AAAI '83, pages 162-167 Orlando, FL, October 4-8 1977 pages 118-330 [Ingalls 1978] [Bobrow 1988a] Daniel H. H. Ingalls D. G. Bobrow, L. G. DeMichiel, R. P. Gabriel, The Smalltalk-76 Programming System S. E. Keene, G. Kiczales, and D. A. Moon Design and Implementation Common Lisp Object System Specification X3J13 5th ACM Symposium on POPL, pp. 9-15 Document 88-002R Tucson, AZ, USA, January 1978 SIGPLAN Notices, Volume 23, Special Issue, September 1988 [Johnson 1988a] Ralph E. Johnson and Brian Foote [Bobrow 1988b] Designing Reusable Classes Daniel G. Bobrow and Gregor Kiczales Journal of Object-Oriented Programming The Common Lisp Object System Volume 1, Number 2, June/July 1988 Metaobject Kernel -- A Status Report pages 22-35 Proceedings of the 1988 Conference on Lisp and Functional Programming [Johnson 1988b] Ralph E. Johnson, Justin O. Graver, and [Deutsch 1984] Laurance W. Zurawski L. Peter Deutsch and Allan M. Schiffman TS: An Optimizing Compiler for Smalltalk Efficient Implementation of the OOPSLA '88 Proceedings Smalltalk-80 System San Diego, CA, September 25-30, 1988 Proceedings of the Tenth Annual ACM Symposium pages 18-26 on Principles of Programming Languages, 1983, pages 297-302 [Keene 1989] Sonya E. Keene [Foote 1988] Object-Oriented Programming in Common Lisp Brian Foote A Programmer's Introduction to CLOS Designing to Facilitate Change with Addison-Wesley, 1989 Object-Oriented Frameworks Masters Thesis, 1988 [LaLonde 1986] University of Illinois at Urbana-Champaign Wilf R. LaLonde, Dave A. Thomas and John R. Pugh An Exemplar Based Smalltalk [Goldberg 1976] OOPSLA '86 Proceedings Adele Goldberg and Alan Kay, editors Portland, OR, October 4-8 1977 pages 322-330 with the Learning Research Group Smalltalk-72 Instruction Manual [LaLonde 1988] Xerox Palo Alto Research Center Wilf R. LaLonde and Mark Van Gulik Building a Backtracking Facility in Smalltalk Without [Goldberg 1983] Kernel Support Adele Goldberg and David Robson OOPSLA '88 Proceedings Smalltalk-80: The Language and San Diego, CA, September 25-30, 1988 its Implementation pages 105-122 Addison-Wesley, Reading, MA, 1983 [Lieberman 1986] [Goldberg 1984] Henry Lieberman Adele Goldberg Using Protypical Objects to Implement Smalltalk-80: The Interactive Shared Behavior Programming Environment in Object-Oriented Systems Addison-Wesley, Reading, MA, 1984 OOPSLA '86 Proceedings Portland, OR, October 4-8 1977 pages 214-223 [Halstead 1985] R. Halstead [Maes 1987a] MultiLISP: A language for Concurrent Pattie Maes Symbolic Computation Computational Reflection ACM Transactions on Programming Languages Artificial Intelligence Laboratory and Systems Vrije Universiteit Brussel October 1985, pages 501-538 Technical Report 87-2 1) Prioritized forwarding to components of programming problems that are awkward to address in conventional object-oriented systems. In Smalltalk-80, the It is easy, using dispatching classes, to construct objects addition of facilities for overriding the message dispatch that test their instance (component) variables in some process on a class wide basis can provide much of the same prioritized order to see whether their contents responds to a power. given message, and to forward such messages to these components. An object, during the course of its lifetime, may enter into a number of different relationships with other objects in its 2) Dynamic fields environment. Some of these relationships will be permanent, or at least relatively static, and others might be Message interception (sometimes in conjunction with quite ephemeral. Some of these relationships might be metaobjects) can also be used to construct objects with quite complex. In conventional object-oriented systems, dynamic fields. Such objects can respond to the standard one such relationship, inheritance, is well supported. external instance variable access protocol, and convert However, the facilities for allowing the programmer to references they don't understand to dictionary accesses. construct similarly powerful mechanisms of this sort of his Alternately, they can permit dictionary-style iteration over or her own are limited. It remains to be demonstrated that static, record-like objects. One scheme for doing this using such facilities will lead to the discovery of mechanisms of doesNotUnderstand: is given in [Foote 1988]. enduring value. The reflective facilities discussed herein can allow such issues to be explored in Smalltalk-80. 3) Dynamic protection Adding a carefully chosen set of reflective facilities to a Specialized dispatching routines could also perform dynamic language like Smalltalk-80 lets it solve many of the same protection functions, based on the class of the sender of the problems that a fully reflective system can, with much message. A protected object's class (or metaobject) might greater efficiency. These facilities can be implemented so contain several dictionaries mapping classes or even that they have little impact on code that doesn't use them. individual instances to sets of message selectors. An object's membership (or lack thereof) in one of these sets Smalltalk-80 is not well suited for parallel programming or would determine its elegibility to send the object the given distributed programming, as can be seen by the number of message. Some sort of wildcard conventions, as well as attempts to extend it for these areas. However, instead of default groups, might be allowed. extending the language repeatedly each time a weakness is discovered, it is better to give it enough power to extend 4) Multiple views itself. This makes it more likely that an existing system can be modified to reuse it in future contexts that cannot An alternate way to protect objects is to export references now be predicted. By adding the ability to redefine message not to the objects themselves, but to objects that forward dispatching, object-oriented languages like Smalltalk-80 restricted sets of the original object's protocol to the will have less need to be extended in the future. Reflective original objects. Such a scheme could permit different facilities can also assist complex systems in adapting to clients to have different "views" of an object. This changing requirements as they evolve by permitting a wider mechanism might resemble operating system capabilities. range of mechanisms for fitting existing objects to new situations. 5) Protocol matching Acknowledgements Yet another application is the construction of protocol mapping adapters. These are objects that can be fitted The second author was supported by NSF contract CCR- between sets of existing objects to translate between 8715752. We would like to thank Peter Deutsch and differing sets of protocol assumptions. Such capabilities ParcPlace Systems for providing tools and support for the might prove valuable in constructing open systems [Hewitt PS based portion of this work. We are grateful to Brian 1983]. Marick for helpful comments on an earlier draft of this paper. Customized method dispatching code can also be be used for the collection of performance data, and dynamic optimizations such as result caching and coercion. Another References application is the construction of persistent objects. [Agha 1986] Gul Agha Conclusions ACTORS: A Model of Concurrent Computation

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    10 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us