Open Source im professionellen Einsatz

Mächtige DSEL

Ziel dieses Artikels war es zum einen, die Techniken hinter Template Metaprogramming zu vermitteln, zum anderen, deren Innovationskraft für C++ aufzuzeigen. Die wahre Stärke von Template Metaprogramming liegt in seinen Eigenschaften einer Domain Specific Embedded Language (DSEL). Das bezeichnet eine Sprache, die auf eine spezielle Domäne ausgerichtet und zudem in die Gastgebersprache eingebettet ist. Anders ausgedrückt: Es ist mit Template Metaprogramming möglich, in der Universalsprache C++ eine mächtige, spezielle Subsprache für besondere Anwendungsbereiche zu definieren. Das Schöne daran ist, dass sowohl die Gast- als auch die Gastgebersprache der C++-Syntax genügen.

Bekannte Beispiele sind die hochperformante Bibliothek Blitz++ [11] für Array-Berechnungen und der Parser-Generator Spirit [12]. Blitz++ bricht durch Template Metaprogramming in die Performance-Domäne von Fortran-Bibliotheken ein [13]. Die Boost-Bibliothek Spirit ermöglicht es, die Grammatik des Parsers vollständig in C++-Syntax zu formulieren. Beide wenden die auf Template Metaprogramming beruhenden Expression Templates [14] an.

Infos

  1. Erwin Unruh, "Primzahlen": http://www.erwin-unruh.de/primorig.html
  2. Rainer Grimm, "Reichhaltiges Angebot": Linux-Magazin 05/10, S. 110
  3. Rainer Grimm, "Erfrischend neu": Linux-Magazin 04/10, S. 116
  4. Rainer Grimm, "Funktionale Grundzüge": http://www.linux-magazin.de/Online-Artikel/Funktionale-Programmierung-1-Grundzuege
  5. Andrei Alexandrescu, "On mappings between types and values": C/C++ Users Journal, 08/2000
  6. Andrei Alexandrescu, "Modern C++ Design": http://www.moderncppdesign.com
  7. Krzysztof Czarnecki und Ulrich W. Eisenecker, "Generative Programming": http://www.generative-programming.org
  8. Bibliothek »type_traits« : http://publib.boulder.ibm.com/infocenter/comphelp/v9v111/index.jsp?topic=/com.ibm.xlcpp9.aix.doc/standlib/header_type_traits.htm
  9. Memcpy: http://www.cplusplus.com/reference/clibrary/cstring/memcpy/
  10. Loop Unwinding: http://en.wikipedia.org/wiki/Loop_unwinding
  11. Bibliothek Blitz++: http://www.oonumerics.org/blitz/
  12. Bibliothek Spirit: http://boost-spirit.com/home/
  13. Benchmarks Blitz++: http://www.oonumerics.org/blitz/benchmarks/
  14. Expression Templates: http://www.angelikalanger.com/Articles/Cuj/ExpressionTemplates/ExpressionTemplates.htm

Der Autor

Rainer Grimm arbeitet seit 1999 als Software-Entwickler bei der Science + Computing AG in Tübingen. Insbesondere hält er Schulungen für das hauseigene Produkt SC Venus.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 7 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook