Hva er metaprogrammering?
Metaprogramming er prosessen med å skrive dataprogrammer som igjen skriver andre programmer. Metaprogrammeringsprosessen tillater større fleksibilitet for dataprogrammerere fordi arbeid som vanligvis gjøres i løpet av løpetiden er tildelt kompileringsperioden. Denne prosessen frigjør programmererens tid til å fokusere på andre oppgaver fordi den kutter ned tiden det tar manuelt å skrive programmets kode. Omkompilering er unødvendig fordi metaprogrammering gjør at programmer kan takle nye situasjoner med større effektivitet. "Metalanguage" er uttrykket gitt til dataspråket som metaprogrammet bruker.
Objektspråk er dataspråket til programmene som er skrevet av metaprogrammeringsprosessen. Refleksivitet er et begrep gitt til metallspråk, som også kan føre til metaprogrammering. Metaprogrammering fungerer på forskjellige måter. En måte er at applikasjonsprogrammeringsgrensesnittet lar programmeringskoden få tilgang til innsiden av kjøretidsmotoren.
En annen måte metaprogrammering fungerer er ved å la programmer skrive andre programmer gjennom den dynamiske utførelsesprosessen. I dette tilfellet brukes strenguttrykk i denne prosessen. Selv om det samme språket kan brukes i disse to prosessene, er det ikke uvanlig at språkene favoriserer den ene prosessen fremfor den andre.
Metaprogrammering fungerer også ved å omgå språket. Det åpner for endring av språk gjennom programtransformasjonssystemer. Denne prosedyren gir metaprogrammering friheten til å bruke språk, selv om språket ikke bruker noen metaprogrammeringsegenskaper.
En kildekode er ikke nødvendig for metaprogrammering. Det kan gjøres ved en inkrementell kompilering eller av runtime-endrede programmer. Datamaskinen langaugae Lisp er det foretrukne språket for metaprogrammeringsprosessen. Dette er på grunn av enkelheten til denne typen dataspråk så vel som dens kraft.
Metaprogrammering som bruker Lisp-språket fungerer ved å tillate evaluering av kode i løpet av programdefinisjonsperioden, i motsetning til løpetiden. Denne prosessen gjør metaprogrammeringsspråket og vertsprogrammeringsspråket det samme. Når dette skjer, kan disse Lisp-rutinene resirkuleres for metaprogrammeringsprosessen.
Andre språk har brukt denne nøyaktige prosessen med integrering av en programtolk. Denne tolken fungerer med dataene i programmet. Domenespesifikk programmeringsspråk i metaprogrammering er en annen form som lager parsers og leksikale analysatorer. Disse lar brukeren bruke vanlige uttrykk for å definere språket.