Hvad er metaprogrammering?
Metaprogrammering er processen med at skrive computerprogrammer, der igen skriver andre programmer. Metaprogrammeringsprocessen tillader større fleksibilitet for computerprogrammører, fordi arbejde, der normalt udføres i løbetidsperioden, tildeles kompileringstiden. Denne proces frigør programmørens tid til at fokusere på andre opgaver, fordi den skærer ned på den tid det tager manuelt at skrive et programkode. Genkompilering er unødvendig, fordi metaprogrammering giver programmer mulighed for at tackle nye situationer med større effektivitet. "Metalanguage" er det udtryk, der gives til det computersprog, som metaprogrammet bruger.
Objektsprog er computersproget for de programmer, der er skrevet af metaprogrammeringsprocessen. Refleksivitet er et udtryk givet til metalsprog, som også kan medføre metaprogrammering. Metaprogrammering fungerer på forskellige måder. En måde er, at applikationsprogrammeringsgrænsefladen tillader programmeringskoden at få adgang til indersiden af runtime-motoren.
En anden måde, hvorpå metaprogrammering fungerer, er ved at lade programmer skrive andre programmer gennem den dynamiske eksekveringsproces. I dette tilfælde bruges strengudtryk i denne proces. Selvom det samme sprog kan bruges i disse to processer, er det ikke usædvanligt for sprogene at favorisere den ene proces frem for den anden.
Metaprogrammering fungerer også ved at omgå sproget. Det giver mulighed for ændring af sprog gennem programtransformationssystemer. Denne procedure giver metaprogrammering friheden til at bruge sprog, selvom sproget ikke bruger nogen metaprogrammeringsegenskaber.
En kildekode er ikke nødvendig til metaprogrammering. Det kan gøres ved hjælp af en inkrementel kompilering eller ved hjælp af programmer, der kan ændres af runtime. Computeren langaugae Lisp er det foretrukne sprog til metaprogrammeringsprocessen. Dette er på grund af enkelheden i denne type computersprog såvel som dens magt.
Metaprogrammering, der bruger Lisp-sproget, fungerer ved at tillade evaluering af kode i programdefinitionsperioden, i modsætning til runtime-perioden. Denne proces gør metaprogrammeringssprog og værtsprogrammeringssprog det samme. Når dette sker, kan disse Lisp-rutiner genanvendes til metaprogrammeringsprocessen.
Andre sprog har brugt denne nøjagtige proces med integrationen af en programtolk. Denne tolk fungerer med dataene i programmet. Domænespecifik programmeringssprog i metaprogrammering er en anden form, der skaber parsere og leksikale analysatorer. Disse gør det muligt for brugeren at bruge regelmæssige udtryk til at definere sproget.