www.wikidata.de-de.nina.az
Metaprogrammierung ist in der Informatik die Erstellung von Computerprogrammen Metaprogramme die Computerprogramme erzeugen Das Ziel dabei ist es den Computer ganz oder teilweise an dem Prozess der Programmierung mitarbeiten zu lassen Dadurch ist es moglich Fehler durch Automatisierung zu vermindern und Computerprogramme ad hoc zu erstellen und auszufuhren Metaprogrammierung gestattet es ebenfalls die Programmiersprache durch den Programmierer um neue Konstruktionen zu erweitern Daher ist sie in homoikonischen Programmiersprachen ein sehr effektives Mittel zur Entwicklung von Domanenspezifischen Sprachen Inhaltsverzeichnis 1 Grundkonzepte 2 Klassifikation 3 Beispiele 3 1 Metaprogrammierung in homoikonischen Programmiersprachen 3 2 Selbstmodifizierender Code 3 3 Behelfsweise Metaprogrammierung in nicht homoikonischen Programmiersprachen 4 Metaprogrammierung in der Psychologie 5 Literatur 5 1 Informatik 5 2 Psychologie 6 Weblinks 7 EinzelnachweiseGrundkonzepte BearbeitenFalls die Programmiersprache homoikonisch ist wie Lisp und seine Dialekte kann die Programm Erzeugung durch das Metaprogramm direkt auf der Ebene der Programmstruktur erfolgen Falls Homoikonizitat nicht gegeben ist kann die Programmerzeugung aber behelfsweise lexikalisch erfolgen wobei das Metaprogramm den Quelltext des Zielprogramms erzeugt In dieser fehleranfalligeren Form kann Metaprogrammierung grundsatzlich in jeder Programmiersprache durchgefuhrt werden Ein abgeschwachtes 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 andernde Rahmenbedingungen entweder zur Laufzeit oder innerhalb der Entwicklungsphase anpassen konnen 1 Klassifikation BearbeitenMetaprogrammierung lasst 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 BearbeitenMetaprogrammierung in homoikonischen Programmiersprachen Bearbeiten Das Makrosystem von Lisp und seinen Dialekten ist aufgrund der Homoikonizitat der Sprache das machtigste derzeit verfugbare Werkzeug zur Metaprogrammierung da diese hier auf der Ebene der Programmstruktur technisch also auf dem Parsebaum erfolgt Dadurch ist es ohne Weiteres moglich Lisp um neue Kontrollstrukturen zu erweitern wie die folgende Definition in Common Lisp zeigt die die WHILE Schleife definiert 3 Eine solche ist in Common Lisp in der ublichen Form nicht enthalten defmacro while cond amp body body let name gensym labels name if cond progn body name name Diese Definition fuhrt die WHILE Schleife auf eine endstandige Rekursion zuruck Im Anschluss kann das neue Sprachkonstrukt direkt verwendet werden let a 0 while lt a 10 print a setq a 1 a Die Ausfuhrung dieses Programms fuhrt dann zu Ausgabe der Zahlen von 0 bis 9 XSL ist eine der wenigen ebenfalls homoikonischen Programmiersprachen Sie beschreibt die Transformation von XML Daten Dabei ist XSL gleichzeitig valides XML wodurch die Homoikonizitat gegeben ist Selbstmodifizierender Code Bearbeiten Hauptartikel Selbstmodifizierender Code Schon in fruhen Computersystemen wurden bisweilen Programme angewandt die zur Laufzeit ihre eigene ausfuhrbare Maschinensprache Reprasentation bearbeiten Behelfsweise Metaprogrammierung in nicht homoikonischen Programmiersprachen Bearbeiten Textmakros in C gestatten es mittels define dem C Compiler einen Quelltext vorzulegen der durch Makroexpansion entsteht Das Verfahren war ursprunglich zur Herstellung von inline Prozeduren gedacht Es ist astabil und sehr fehleranfallig C Metaprogrammierung bezeichnet die Technik der Metaprogrammierung innerhalb der Programmiersprache C Noch einfachere Szenarien gehoren genau genommen ebenfalls zur Metaprogrammierung wie zum Beispiel die Erzeugung von JavaScript Code fur den Browser durch ein serverseitiges PHP Skript oder andere Einsatzformen von Codegenerierung Dabei kann fast jede Programmiersprache zum Einsatz kommen Da die Programmerzeugung auch hier auf der Ebene des Quelltextes erfolgt ist es ebenfalls sehr fehleranfallig Metaprogrammierung in der Psychologie BearbeitenGemass dem Neurophysiologen John Cunningham Lilly beschreibt Metaprogrammierung die durch Metakommunikation erfolgende Programmierung des menschlichen Biocomputers Literatur BearbeitenInformatik Bearbeiten Patrick M Krusenotto Funktionale Programmierung und Metaprogrammierung Interaktiv in Common Lisp Springer Verlag 2016 ISBN 978 3 658 13743 4 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 3642197352Psychologie Bearbeiten John C Lilly Programmierung und Metaprogrammierung des menschlichen Biocomputers Phanomen Verlag Auflage 1 Aufl 18 April 2010 ISBN 978 3933321688Weblinks BearbeitenMetaprogrammierung Skript Kapitel Uni Passau PDF 195 kB Einzelnachweise Bearbeiten 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 Patrick M Krusenotto Funktionale Programmierung und Metaprogrammierung Interaktiv in Common Lisp Springer Verlag 2016 ISBN 978 3 658 13743 4 Seite 275 Abgerufen von https de wikipedia org w index php title Metaprogrammierung amp oldid 233766828