Zum Inhalt springen

Metaprogrammierung

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 10. April 2017 um 11:13 Uhr durch West of House (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Metaprogrammierung ist in der Informatik die Erstellung von Computerprogrammen ("Metaprogramme"), die Computerprogramme erzeugen. Falls die Programmiersprache homoikonisch ist, wie Lisp und seine Dialekte, kann die Programm-Erzeugung durch das Metaprogramm direkt auf der Ebene der Programmstruktur erfolgen. Falls Homoikonizität nicht gegeben ist, kann die Programmerzeugung aber behelfsweise lexikalisch erfolgen, wobei das Metaprogramm den Quelltext eines Zielprogramms erzeugt. Das kann grundsätzlich in jeder Programmiersprache durchgeführt werden kann.

Ein abgeschwächtes Mittel zur Metaprogrammierung ist die Introspektion, bei der die Struktur des Zielprogramms allerdings bereits 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

Einzelnachweise

  1. 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
  2. Metaprogrammierung – Skript Kapitel (Uni Passau; PDF, 195 kB)