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 

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

 Makroar 

 Scheme sine hygieniske makroar
 Template Haskell
 MakroML

Kategori:Programmering