Metaprogrammering

Metaprogrammering er å skriva dataprogram som har evna til å handsama program som sine data. Det tyder at eit program kan utformast for å lesa, syna, analysera eller transformera andre program og til og med endra seg sjølv medan det køyrer.

Språket som eit metaprogram er skrive i vert kalla eit metaspråk. Språk for program som er manipulerte vert kalla objektspråk. Når eit programmeringsspråk sjølv har evna til å vera sitt eige metaspråk vert dette kalla refleksjon. Refleksjon er eit kraftig verktøy i programmeringsspråk som legg til rette for metaprogrammering. I eit språk der språket sjølv er ein førsteklasses datatype (som i Lisp, Prolog, SNOBOL) er òg veldig nyttig, dette er kjent som homoikonisitet. Generisk programmering nyttar seg av ein slags metaprogrammeringsfunksjonalitet i dei språka som har støtte for det.

Implementeringar endre

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

Makroar endre

  • Scheme sine hygieniske makroar
  • Template Haskell
  • MakroML