Metaprogrammering

Metaprogrammering er å skrive dataprogrammer som har evnen til å behandle programmer som sine data. Det betyr at et program kan være utformet for å lese, vise, analysere eller transformere andre programmer og til og med endre seg selv mens det kjører.[1][2] I noen tilfeller kan det redusere antall linjer med kode (dermed redusere utviklingstiden).[trenger referanse]

Språket som et metaprogram er skrevet i kalles et metaspråk. Språk for programmer som er manipulert kalles objektspråk. Når et programmeringsspråk selv har evnen til å være sitt eget metaspråk kalles dette refleksjon. Refleksjon er et kraftig verktøy i programmeringsspråk som legger til rette for metaprogrammering. I et språk hvor språket selv er en førsteklasses datatype (som i Lisp, Prolog, SNOBOL) er også veldig nyttig, dette er kjent som homoikonisitet. Generisk programmering benytter seg gjerne av en slags metaprogrammeringsfunksjonalitet i de språk som har støtte for det.

Implementeringer

Templatmetaprogrammering

Utdypende artikkel: Templatmetaprogrammering

  • «X macros» i programmeringsspråket C
  • Templates i programmeringsspråket C++

Makroer

  • Scheme sine hygieniske makroer
  • Template Haskell
  • MakroML

Referanser

  1. ^ Course on Program Analysis and Transformation.
  2. ^ Czarnecki, Krzysztof; Eisenecker, Ulrich W. (2000). Generative Programming. ISBN 0-201-30977-7. 
  • v
  • d
  • r
Typer programmeringsspråk
Paradigme
  • Aktørbasert
  • Aspektorientert
  • Dataflyt
    • Flytbasert
  • Deklarativ
  • Deriverbar
  • Domenespesifikk
  • Dynamisk
  • Esoterisk
  • Funksjonell
  • Følbart
  • Hendelsesdrevet
  • Imperativ
  • Malprosessor
  • Makro
  • Metaprogrammering
  • Klassebasert
  • Kommandokø (pipeline)
  • Konkatenativ
  • Logisk
  • Objektbasert
  • Objektorientert
  • Prosedyrisk
  • Prototypebasert
  • Regelbasert
  • Samtidig
  • Selvmodifiserende
  • Skripting
  • Stakkorientert
  • Synkront
  • Tabell
  • Utvidbar
Nivå
Generasjon
  • 1. generasjon
  • 2. generasjon
  • 3. generasjon
  • 4. generasjon
  • 5. generasjon
Relatert
Autoritetsdata