Metaprogrammierung
Metaprogrammierung, auch Reflexion (computational reflexion), beschreibt die Fähigkeit von Programmen, sich selbst zu analysieren und ihr Verhalten zu verändern.<ref>Andreas Rasche: Ausführung und Entwicklung adaptiver Komponentenbasierter Anwendungen. Cuvillier, E; Auflage: 1., Aufl. ISBN 978-3867276986. Seite 27</ref> Die Reflection ist die abgeschwächte Form von Metaprogrammierung, wobei Werte zwar geändert werden können, aber die Struktur fest bleibt.
Metaprogrammierung entstand aus dem Wunsch, adaptive Softwaresysteme zu entwickeln, die sich leicht an sich ändernde Rahmenbedingungen entweder zur Laufzeit oder innerhalb der Entwicklungsphase anpassen können.<ref>Doga Arinir: Multidimensionale Separierung der Belange in der Softwareentwicklung durch Feature-Komponenten. W3L GmbH; Auflage: 1 (18. Juli 2007). ISBN 978-3937137537. Seite 50/51</ref>
Es handelt sich also um die Programmierung von Programmierung: Der Programmcode wird von einem anderen Programmcode erzeugt. Im einfachsten Fall ist die Ausgabe des erzeugenden Programmes selbst ein Programm in der gleichen oder einer anderen Programmiersprache. Einige Programmiersprachen stellen für die Metaprogrammierung gesonderte Mechanismen zur Verfügung.
Inhaltsverzeichnis
Klassifikation
Metaprogrammierung lassen sich nach verschiedenen Gesichtspunkten einteilen:<ref>Metaprogrammierung – Skript Kapitel (Uni Passau; PDF, 195 kB)</ref>
Nach Bearbeitungszeitpunkt:
- statisch (zur Compiler-Zeit)
- dynamisch (zur Laufzeit)
Nach Sprachen:
- homogen (Metasprache ist Objektsprache)
- heterogen (sonst)
Nach Stufen:
- mehrstufig (Objektsprache ist selbst Metasprache)
- einstufig (sonst)
Beispiele
Das Makrosystem von Lisp ist die derzeit mächtigste Umsetzung davon, da hier durch die besondere Struktur der Sprache die Makros auf der Ebene des Parsebaums gebildet werden können. Aber auch simplere Szenarien gehören genau genommen zur Metaprogrammierung, wie zum Beispiel die Erzeugung von JavaScript-Code für den Browser durch ein serverseitiges PHP-Skript.
C++-Metaprogrammierung bezeichnet die Technik der Metaprogrammierung innerhalb der Programmiersprache C++, also eine Technik, um in C++ Programmcode von anderem Programmcode generieren zu lassen.
Weitere Programmiersprachen, die Metaprogrammierung unterstützen sind: Python, Ruby, Scheme, Smalltalk, Self, Snap! / BYOB.
Metaprogrammierung des menschlichen Biocomputers
Gemäß dem Neurophysiologen John Cunningham Lilly beschreibt Metaprogrammierung die durch Metakommunikation erfolgende Programmierung des menschlichen Biocomputers.
Literatur
- John C. Lilly: Programmierung und Metaprogrammierung des menschlichen Biocomputers. Phänomen-Verlag; Auflage: 1., Aufl. (18. April 2010). ISBN 978-3933321688
- Thomas Maier-Komor: Methoden der Metaprogrammierung zur Rekonfiguration von Software eingebetteter Systeme. Dr. Hut; Auflage: 1. Aufl. (31. Januar 2007). ISBN 978-3899634709
- Oliver Vogel, Ingo Arnold, Arif Chughtai, Timo Kehrer: Software Architecture: A Comprehensive Framework and Guide for Practitioners. Springer; Auflage: 2011 (17. September 2011). ISBN 978-3642197352
Weblinks
- Metaprogrammierung – Skript Kapitel (Uni Passau; PDF, 195 kB)
Einzelnachweise
<references />