Jeremy G. Siek and Andrew Lumsdaine.
Language Requirements for Large-Scale Generic Libraries.
In GPCE '05: Proceedings of the fourth international conference on Generative Programming and Component Engineering,
September 2005.
Note: Accepted for publication.
@InProceedings{siek05:_g_stl,
author = {Jeremy G. Siek and Andrew Lumsdaine},
title = {Language Requirements for Large-Scale Generic Libraries},
booktitle = {{GPCE} '05: Proceedings of the fourth international conference on {Generative} {Programming} and {Component} {Engineering}},
year = 2005,
month = {September},
note = {accepted for publication},
annote = {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 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 G and analyze the interdependence between language features and libraries design in light of a complete implementation of the Standard Template Library using 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. }
}
Jeremy G. Siek and Andrew Lumsdaine.
Essential Language Support for Generic Programming.
In PLDI '05: Proceedings of the ACM SIGPLAN 2005 conference on Programming language design and implementation,
New York, NY, USA,
pages 73--84,
June 2005.
ACM Press.
@InProceedings{siek05:_fg_pldi,
author = {Jeremy G. Siek and Andrew Lumsdaine},
title = {Essential Language Support for Generic Programming},
booktitle = {{PLDI} '05: Proceedings of the {ACM} {SIGPLAN} 2005 conference on Programming language design and implementation},
year = 2005,
month = {June},
isbn = {1-59593-056-6},
pages = {73--84},
location = {Chicago, {IL}, {USA}},
doi = {http://doi.acm.org/10.1145/1065010.1065021},
publisher = {{ACM} Press},
address = {New York, {NY}, {USA}},
annote = {``Concepts'' are an essential language feature needed to support generic programming in the large. Concepts allow for succinct expression of bounds on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In this paper we present the design of a type system and semantics for concepts that is suitable for non-type-inferencing languages. Our design shares much in common with the type classes of Haskell, though our primary influence is from best practices in the \Cpp{} community, where concepts are used to document type requirements for templates in generic libraries. Concepts include a novel combination of associated types and same-type constraints that do not appear in type classes, but that are similar to nested types and type sharing in ML.}
}