|
ABSTRACT
Concepts are a recently proposed extension to C++ for the direct linguistic support of generic programming. As the interface description mechanism for large-scale generic libraries, concepts do not exist in isolation, but rather in semantic frameworks (or concept lattices). Concepts provide powerful type-checking capabilities for generic programming and the semantics associated with them present new and interesting capabilities for library-compiler interactions. This paper presents some of these emergent capabilities in the context of a library of algebraic concepts. Based on this library, which possesses rich, well-structured and mathematically-based semantics, we demonstrate how the concepts therein can enable a sophisticated oncept-aware design for a broad range of scientific generic libraries. In particular, we show that concepts can enable the description and application of property-based, library-defined, optimizations. Whereas compilers without concepts are limited to optimization of built-in types, library-defined optimizations based on concepts not only allow for optimizations of user-defined types unknown to the compiler, they are even applicable to types unknown to the library developer.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
O. Bagge, M. Haveraaen, and E. Visser. CodeBoost: A framework for the transformation of C++ programs. Technical report, Universiteit Utrecht, The Netherlands, October 2000.
|
| |
2
|
J.-C. Birget, S. Margolis, J. Meakin, and M. Sapir, editors. Algorithmic Problems in Groups and Semigroups. Birkhäuser, Boston, 2000.
|
| |
3
|
N. Bourbaki. Algèbre I: Chapitres 1 à 3. Numérisation BnF de l'édition de Paris, 1970.
|
| |
4
|
P. Gottschling. Fundamental algebraic concepts in concept-enabled C++. Technical Report 638, Indiana University, 2006.
|
| |
5
|
P. Gottschling and W. E. Brown. Toward a more complete taxonomy of algebraic properties for numeric libraries in tr2. Technical Report N2650=08-0160, ISO/IEC JTC 1, Information Technology, Subcommittee SC 22, Programming Language C++, June 2008.
|
 |
6
|
Douglas Gregor , Jaakko Järvi , Jeremy Siek , Bjarne Stroustrup , Gabriel Dos Reis , Andrew Lumsdaine, Concepts: linguistic support for generic programming in C++, Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, October 22-26, 2006, Portland, Oregon, USA
|
| |
7
|
K. Henckell and J.-E. Pin. Ordered Monoids in J-Trivial, pages 121--137. In Birget et al. {2}, 2000.
|
| |
8
|
M. R. Hestenes and E. Stiefel. Methods of conjugate gradients for solving linear systems. J. Res. Nat. Bur. Standards, 49(6):409--436, December 1952.
|
| |
9
|
|
| |
10
|
H. Holin. Boost Quaternion Library. Boost, 2003. www.boost.org/libs/math/quaternion.
|
| |
11
|
|
| |
12
|
S. Mechveliani. DoCon the algebraic domain constructor. http://www.haskell.org/docon/.
|
| |
13
|
D. R. Musser, S. Schupp, C. Schwarzweller, and R. Loos. The Tecton concept library. Technical report, Fakultät für Informatik, Universität Tübingen, 1999.
|
| |
14
|
D. Quinlan. ROSE: Compiler support for object-oriented frameworks. Parallel Processing Letters, 10(2,3):215--226, 2000.
|
| |
15
|
J.-F. Raymond, P. Tesson, and D. Thérien. Multiparty Communication Complexity of Finite Monoids, pages 217--233. In Birget et al. {2}, 2000.
|
| |
16
|
S. Schupp, D. P. Gregor, and D. R. Musser. Algebraic concepts represented in C++. Technical Report TR-00-8, Rensselaer Polytechnic Institute, 2000. http://www.cs.chalmers.se/~schupp/old_projects/simpl/doc/AlgCpp.pdf.
|
| |
17
|
|
| |
18
|
J. Siek and A. Lumsdaine. Concept checking: Binding parametric polymorphism in C++. In First Workshop on C++ Template Programming, October 2000.
|
| |
19
|
Silicon Graphics, Inc. SGI Implementation of the Standard Template Library, 2004. http://www.sgi.com/tech/stl/.
|
| |
20
|
B. Stroustrup and G. Dos Reis. A concept design. C++ Extensions reflector message c++std-ext-7073, April 2005.
|
| |
21
|
B. L. van der Waerden. Algebra, Volume I and II. Springer, 1990.
|
| |
22
|
E. Visser. Program transformation with Stratego/XT: Rules, strategies, tools, and systems in StrategoXT-0.9. In C. Lengauer et al., editors, Domain-Specific Program Generation, volume 3016 of Lecture Notes in Computer Science, pages 216--238. Spinger-Verlag, June 2004.
|
|