b'\n_START_ARTICLE_\nMetaprogrammering\n_START_PARAGRAPH_\nMetaprogrammering\xc2\xa0er \xc3\xa5 skrive dataprogrammer som har evnen til \xc3\xa5 behandle programmer som sine data. Det betyr at et program kan v\xc3\xa6re utformet for \xc3\xa5 lese, vise, analysere eller transformere andre programmer og til og med endre seg selv mens det kj\xc3\xb8rer. I noen tilfeller kan det redusere antall linjer med kode (dermed redusere utviklingstiden)._NEWLINE_Spr\xc3\xa5ket som et metaprogram er skrevet i kalles et metaspr\xc3\xa5k. Spr\xc3\xa5k for programmer som er manipulert kalles objektspr\xc3\xa5k. N\xc3\xa5r et programmeringsspr\xc3\xa5k selv har evnen til \xc3\xa5 v\xc3\xa6re sitt eget metaspr\xc3\xa5k kalles dette refleksjon. Refleksjon er et kraftig verkt\xc3\xb8y i programmeringsspr\xc3\xa5k som legger til rette for metaprogrammering. I et spr\xc3\xa5k hvor spr\xc3\xa5ket selv er en f\xc3\xb8rsteklasses datatype (som i Lisp, Prolog, SNOBOL) er ogs\xc3\xa5 veldig nyttig, dette er kjent som homoikonisitet. Generisk programmering benytter seg gjerne av en slags metaprogrammeringsfunksjonalitet i de spr\xc3\xa5k som har st\xc3\xb8tte for det.'