Metaprogrammierung ist in der Informatik die Erstellung von Computerprogrammen ("Metaprogramm"), die Computerprogramme erzeugen. Die Programm-Erzeugung durch das Metaprogramm kann direkt auf der Ebene der Programmstruktur erfolgen, falls die Programmiersprache homoikonisch (Lisp, Scheme) ist. Behelfsweise kann dies aber ebenfalls lexikalisch erfolgen, wobei das Metaprogramm den Quelltext des Zielprogramms erzeugt, was grundsätzlich in jeder Programmiersprache durchgeführt werden kann.
Ein abgeschwächtes Mittel ist die Introspektion, wobei die Struktur des Zielprogramms zum Zeitpunkt der Erstellung des Metaprogramms festliegen muss.
Metaprogrammierung ist eine der konzeptionellen Grundlagen des Programmiersprachen-Compilers. Sie bedient aber auch den Wunsch, adaptive Softwaresysteme zu entwickeln, die sich leicht an sich ändernde Rahmenbedingungen entweder zur Laufzeit oder innerhalb der Entwicklungsphase anpassen können.[1]
Klassifikation
Metaprogrammierung lassen sich nach verschiedenen Gesichtspunkten einteilen:[2]
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
- Patrick M. Krusenotto Funktionale Programmierung und Metaprogrammierung – Interaktiv in Common Lisp Springer-Verlag 2016, ISBN 978-3-658-13743-4
- 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
- ↑ 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
- ↑ Metaprogrammierung – Skript Kapitel (Uni Passau; PDF, 195 kB)