Zum Inhalt springen

Metaprogrammierung

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. April 2017 um 11:29 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 ("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

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)