metaprogrammeerimine
Metaprogrammeerimine on programmeerimise tehnika, kus programm kirjutab või muundab teisi programme või nende koodi. Selle eesmärk on luua kõrgem-tase abstraktsioonid ja vähendada käsitsi kirjutatava koodi mahtu, genereerides või kohandades koodi automaatselt.
Metaprogrammeerimine jaguneb peamiselt kaheks: compile-time ehk enne käivitamist toimuv koodi genereerimine, ning runtime ehk käivituse ajal
Tehnikad hõlmavad makrosid, šabloonõppe- või template-põhist metaprogrammeerimist, refleksiooni ning dünaamilist koodigeneratsiooni, samuti domeeni-spetsiifiliste keelade (DSL-de) loomist.
Kasutusalad hõlmavad API-de või konfiguratsioonide automaatset genereerimist, kohandatut raamistiku või kitide loomist ning korduva koodi vähendamist,