How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
F-bounded polymorphism for object-oriented programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Programming with CGAL: the example of triangulations
SCG '99 Proceedings of the fifteenth annual symposium on Computational geometry
A library of generic algorithms in Ada
SIGAda '87 Proceedings of the 1987 annual ACM SIGAda international conference on Ada
Communications of the ACM
The boost graph library: user guide and reference manual
The boost graph library: user guide and reference manual
ISAAC '88 Proceedings of the International Symposium ISSAC'88 on Symbolic and Algebraic Computation
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
Operators and algebraic structures
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
A comparative study of language support for generic programming
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Essential language support for generic programming
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Concepts: linguistic support for generic programming in C++
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Software extension and integration with type classes
Proceedings of the 5th international conference on Generative programming and component engineering
An extended comparative study of language support for generic programming
Journal of Functional Programming
Toward foundations for type-reflective metaprogramming
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
A language for generic programming in the large
Science of Computer Programming
Design of concept libraries for c++
SLE'11 Proceedings of the 4th international conference on Software Language Engineering
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Hi-index | 0.00 |
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.