Metaprogrammierung

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Metaprogrammierung, auch Reflexion (computational reflexion), beschreibt die Fähigkeit von Programmen, sich selbst zu analysieren und ihr Verhalten zu verändern.[1] 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.[2]

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.

Klassifikation[Bearbeiten]

Metaprogrammierung lassen sich nach verschiedenen Gesichtspunkten einteilen:[3]

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[Bearbeiten]

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[Bearbeiten]

Gemäß dem Neurophysiologen John Cunningham Lilly beschreibt Metaprogrammierung die durch Metakommunikation erfolgende Programmierung des menschlichen Biocomputers.

Literatur[Bearbeiten]

  • 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[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Andreas Rasche: Ausführung und Entwicklung adaptiver Komponentenbasierter Anwendungen. Cuvillier, E; Auflage: 1., Aufl. ISBN 978-3867276986. Seite 27
  2. 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
  3. Metaprogrammierung – Skript Kapitel (Uni Passau; PDF, 195 kB)