Skip to main content

Lightweight and Generative Components I: Source-Level Components

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 1799))

Abstract

Current definitions of “software component” are based on abstract data types — collections of functions together with local data. This paper addresses two ways in which this definition is inadequate: it fails to allow for lightweight components — those for which a function call is too inefficient or semantically inappropriate — and it fails to allow for generative components — those in which the component embodies a method of constructing code rather than actual code. We argue that both can be solved by proper use of existing language technologies, by using a higher-order meta-language to compositionally manipulate values of type Code, syntactic fragments of some object language. By defining a client as a function from a component to Code, components can be defined at a very general level without much notational overhead.

In this paper, we illustrate this idea entirely at the source-code level, taking Code to be string. Operating at this level is particularly simple, and is useful when the source code is not proprietary. In a companion paper, we define Code as a set of values containing machine-language code (as well as some additional structure), allowing components to be delivered in binary form.

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

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Dawson Engler. Incorporating applications semantics and control into compilation. In Proceedings of the Conference on Domain-Specific Languages, Santa Barbara, California, USA, 15–17 October 1997.

    Google Scholar 

  2. Dawson R. Engler, Wilson C. Hsieh, and M. Frans Kaashoek. ‘C: A language for high-level, efficient, and machine-independent dynaic code generation. In Conference Record of POPL’ 96: The 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 131–144, St. Petersburg Beach, Florida, 21–24 January 1996.

    Google Scholar 

  3. Chris W. Fraser and David R. Hanson. A retargetable compiler for ANSI C. SIGPLAN Notices, 26(10):29–43, October 1991.

    Article  Google Scholar 

  4. James Gosling, Bill Joy, and Guy L. Steele Jr. The Java Language Specification. The Java Series. Addison-Wesley, Reading, MA, USA, 1996.

    MATH  Google Scholar 

  5. Robert Harper, Robin Milner, and Mads Tofte. The definition of Standard ML: Version 3. Technical Report ECS-LFCS-89-81, Laboratory for the Foundations of Computer Science, University of Edinburgh, May 1989.

    Google Scholar 

  6. Sam Kamin, Miranda Callahan, and Lars Clausen. Lightweight and generative components ii: Binary-level components. September 1999.

    Google Scholar 

  7. Kim Mens, Cristina Lopes, Bedir Tekinerdogan, and Gregor. Kiczales. Aspect-oriented programming. Lecture Notes in Computer Science, 1357:483–--, 1998.

    Google Scholar 

  8. Dale Rogerson. Inside COM: Microsoft’s Component Object Model. Microsoft Press, 1997.

    Google Scholar 

  9. Walid Taha and Tim Sheard. Multi-stage programming with explicit annotations. In Proceedings of the ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM-97), volume 32, 12 of ACM SIGPLAN Notices, pages 203–217, New York, June 12–13 1997. ACM Press.

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2000 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Kamin, S., Callahan, M., Clausen, L. (2000). Lightweight and Generative Components I: Source-Level Components. In: Czarnecki, K., Eisenecker, U.W. (eds) Generative and Component-Based Software Engineering. GCSE 1999. Lecture Notes in Computer Science, vol 1799. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-40048-6_5

Download citation

  • DOI: https://doi.org/10.1007/3-540-40048-6_5

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-41172-7

  • Online ISBN: 978-3-540-40048-6

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics