Skip to main content
Log in

Adding Support for Persistence to CLOS via Its Metaobject Protocol

  • Published:
LISP and Symbolic Computation

Abstract

Language-level support for object persistence frees programmers from having to confront a broad class of database issues from within their applications. By virtue of its metaobject protocol, CLOS is a language whose semantics can be tailored by individual programmers. We used the metaobject protocol to extend CLOS with support for object persistence. Our goal was to obtain a version of CLOS with persistence to which we could easily port a commercial geometric CAD modeling system. We describe the design and implementation of our persistence extension and highlight the strengths and weaknesses exhibited by the CLOS metaobject protocol during our experiment. For many aspects of the implementation we found that the metaobject protocol was ideal. In other cases we had to choose among paying a large performance penalty, extending the protocol, and bypassing the protocol by modifying the language implementation directly.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. G. Attardi, C. Bonini, M.R. Boscotrecase, T. Flagella, and M. Gaspari. Metalevel programming in CLOS. In Proceedings of the European Conference on Object-Oriented Programming (1989).

  2. F. Bancilhon and D. Maier. Multilanguage object-oriented systems: new answer to old database problems? In Programming of Future Generation Computers II, Fuchi, K. and Kott, L. editors. Elsevier Science Publishers B.V. (North-Holland) (1988).

    Google Scholar 

  3. D.G. Bobrow, L. DeMichiel, R.P. Gabriel, G. Kiczales, D. Moon, and S.E. Keene. The Common Lisp Object System Specification: Chapters 1 and 2. Technical report 88–002R, X3J13 Standards Committee Document (1988).

  4. D.G. Bobrow and M. Stefik. The Loops Manual. Intelligent Systems Laboratory, Xerox Palo Alto Research Center (1983).

  5. G. Bracha. The programming language Jigsaw: mixins, modularity, and multiple inheritance. Ph.D. thesis, Department of Computer Science, University of Utah (1992).

  6. W.P. Cockshott. PS-Algol Implementations: Applications in Persistent Object-Oriented Programming. Ellis Horwood Limited (1990).

  7. G. Copeland and D. Maier. Making Smalltalk a database system. In Proceedings of the ACM SIGMOD International Conference on Management of Data (June 1984). ACM SIGMOD Record 14, 2 (1984).

  8. A.L. Hosking. Lightweight support for fine-grained persistence on stock hardware. Ph.D. thesis, University of Massachusetts at Amherst (1995).

    Google Scholar 

  9. J.H. Jacobs and M.R. Swanson. Syntax and semantics of a persistent Common Lisp. In Proceedings of the ACM Symposium on Lisp and Functional Programming (1993).

  10. G. Kiczales. Towards a new model of abstraction in software engineering. In Proceedings of the IMSA '92 Workshop on Reflection and Meta-level Architectures (1992).

  11. G. Kiczales. Why are black boxes so hard to reuse? (Towards a new model of abstraction in the engineering of software.) Invited Talk at the OOPSLA '94 Conference on Object-oriented Programming Systems, Languages, and Applications, Portland, Oregon (October 1994).

  12. G. Kiczales, J. des Rivières, and D.G. Bobrow. The Art of the Metaobject Protocol. The MIT Press (1991).

  13. G. Kiczales, J. Lamping, C.V. Lopes, A. Mendhekar, and G. Murphy. Open implementation design guidelines. (submitted to ICSE-97: 19th International Conference on Software Engineering, Boston, Mass.)

  14. A.H. Lee. An object-oriented programming approach to geometric modeling. In Proceedings of Evans & Sutherland Technical Retreat, Ocho Rio, Jamaica (1989).

  15. A.H. Lee. Managing complex objects. Internal document, Evans & Sutherland Computer Co. (1990).

  16. A.H. Lee. The persistent object system MetaStore: persistence via metaprogramming. Ph.D. thesis, Department of Computer Science, University of Utah (1992).

  17. A.H. Lee and J.L. Zachary. Reflections on metaprogramming. IEEE Transactions on Software Engineering, 21, 11 (November 1995) 883–893.

    Google Scholar 

  18. Lucid Common Lisp/MIPS Version 4.0, Advanced User's Guide. Lucid, Inc. (1990).

  19. C. Maeda, A.H. Lee, G. Murphy, and G. Kiczales. Open implementation analysis and design[tm]. (submitted to ICSE-97: 19th International Conference on Software Engineering, Boston, Mass.)

  20. J.S. Miller. MultiScheme: a parallel processing system based on MIT Scheme. Ph.D. thesis, Massachusetts Institute of Technology (1987).

  21. R. Morrison. S-Algol Language Reference Manual. CS–79–1, University of St. Andrews (1979).

  22. A. Paepcke. PCLOS: stress testing CLOS: experiencing the metaobject protocol. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (1990).

  23. A. Paepcke. User-level language crafting: Introducing the CLOS metaobject protocol. A. Paepcke, ed., Object-Oriented Programming: The CLOS Perspective (1992).

  24. L.H. Rodriguez, Jr. Coarse-grained parallelism using metaobject protocols. M.S. Thesis, Massachusetts Institute of Technology (1991). (Also available as Technical report SSL–91–06, Xerox Palo Alto Research Center, 1991.)

  25. L.H. Rodriguez, Jr. Towards a better understanding of compile-time metaobject protocols for parallelizing compilers. In Proceedings of IMSA '92: International Workshop on Reflection and Meta-level Architecture, Tokyo, Japan (1992).

  26. B.C. Smith. Reflection and semantics in a procedural language (Ph.D. thesis). Technical Report TR-272, Laboratory for Computer Science, MIT (1982).

  27. B.C. Smith. Reflection and semantics in Lisp. In Proceedings of the ACM Symposium on Principles of Programming Languages (POPL), Salt Lake City, Utah (1984).

  28. G. L. Steele, Jr and G.J. Sussman. Scheme: An interpreter for the extended lambda calculus. Memo 349, MIT Artificial Intelligence Laboratory (1975).

  29. G.L. Steele, Jr. Common Lisp: The Language, Second edition. Digital Press (1990).

  30. D. Weinreb. An object-oriented database system to support an integrated programming environment. IEEE Data Engineering, 11, 2 (June 1988).

  31. D. Weinreb, N. Feinberg, D. Gerson, and C. Lamb. An object-oriented database system to support an integrated programming environment. R. Gupta and E. Horowitz, eds, Object-Oriented Databases with Applications to CASE, Networks, and VLSI Design, Prentice Hall, Englewood Cliffs, NJ (1991) 117–129.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Lee, A.H., Zachary, J.L. Adding Support for Persistence to CLOS via Its Metaobject Protocol. Higher-Order and Symbolic Computation 10, 39–60 (1997). https://doi.org/10.1023/A:1007778507214

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1007778507214

Navigation