Language requirements for large-scale generic libraries

  • Authors:
  • Jeremy Siek;Andrew Lumsdaine

  • Affiliations:
  • Open Systems Laboratory, Indiana University;Open Systems Laboratory, Indiana University

  • Venue:
  • GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

The past decade of experience has demonstrated that the generic programming methodology is highly effective for the design, implementation, and use of large-scale software libraries. The fundamental principle of generic programming is the realization of interfaces for entire sets of components, based on their essential syntactic and semantic requirements, rather than for any particular components. Many programming languages have features for describing interfaces between software components, but none completely support the approach used in generic programming. We have recently developed $\mathcal{G}$, a language designed to provide first-class language support for generic programming and large-scale libraries. In this paper, we present an overview of $\mathcal{G}$ and analyze the interdependence between language features and library design in light of a complete implementation of the Standard Template Library using $\mathcal{G}$. In addition, we discuss important issues related to modularity and encapsulation in large-scale libraries and how language support for validation of components in isolation can prevent many common problems in component integration.