Template-Programmierung

Templates sind Schablonen, die Programmcode-Sequenzen in allgemein wiederverwendbarer Form bereitstellen. Dabei ist deren Definition unabhängig davon, mit welchen Daten sie letztendlich agieren, da diese erst mit der Verwendung eines Templates festgelegt werden. Man spricht in diesem Zusammenhang auch von der Instanziierung eines Templates durch den Compiler.

Der Grundgedanke der Template-Programmierung ist durch die Wiederverwendung des Programmcodes, dessen Anfälligkeit hinsichtlich Fehler zu reduzieren, und die gesamte Implementierung in abstrakterer - auch kompakterer - Form darzustellen. Insbesondere bieten sich beispielsweise Algorithmen für Stack- und Queue-Strukturen, Sequenzen für Sortieralgorithmen oder auch allgemein verwendbare Verwaltungsoperationen an, mit Templates zu arbeiten.

In der objektorientierten Programmierung wie beispielsweise in C++ oder der Programmiersprache D sind Templates im Zusammenhang mit Funktionen und Klassen möglich. Durch die C++-Standardbibliothek sind bereits eine Anzahl von Templates in Form eines Template-Frameworks vorgegeben. Der Namensbereich von Funktions- und Klassen-Templates ist jeweils ein eigener. Hier sind Templates insbesondere in der Kombination mit den Mechanismen der Vererbung und der Überladung von Operatoren sinnvoll einsetzbar. "D" unterstützt zwar ausdrücklich nicht die mehrfache Klassenvererbung, aber auch dort ist über die Verwendung von mixins dieselbe Funktionalität erreichbar. Ein weiterer interessanter Aspekt der Template-Programmierung ist deren Möglichkeit der Spezialisierung. Dadurch kann man für bestimmte Datentypen als Template Argumente Klassen- und Funktionstemplates realisieren.

Eine noch höhere Ebene der Abstraktion ist möglich durch die Definition von Templates, die wiederum als Parameter von Templates verwendet werden. Im Zusammenhang mit Templates ist auch häufig von generischer Programmierung die Rede.

Informationen zum Artikel
Deutsch: Template-Programmierung
Englisch: template programming
Veröffentlicht: 15.07.2009
Wörter: 252
Tags: Programmiersprachen
Links: Abstraktion, Algorithmus, Aspekt, C++, Compiler