Metaprogramming on prosessi, jolla kirjoitetaan tietokoneohjelmia, jotka puolestaan kirjoittavat muita ohjelmia. Metaprogramming -prosessi mahdollistaa suuremman joustavuuden tietokoneohjelmoijille, koska yleensä ajon aikana suoritettu työ kohdistetaan käännösjaksolle. Tämä prosessi vapauttaa ohjelmoijan aikaa keskittyä muihin tehtäviin, koska se lyhentää aikaa, joka kuluu ohjelman koodin kirjoittamiseen manuaalisesti. Uudelleen kääntäminen on tarpeetonta, koska metaprogrammoinnin avulla ohjelmat voivat käsitellä uusia tilanteita tehokkaammin. “Metakieli” on termi, joka annetaan metaprogrammin käyttämälle tietokoneen kielelle.
Objektikieli on niiden ohjelmointikieli, jotka on kirjoitettu meta -ohjelmointiprosessin avulla. Reflexivity on metakielelle annettu termi, joka voi myös saada aikaan metaprogrammoinnin. Metaprogrammointi toimii eri tavoin. Yksi tapa on, että sovellusohjelmointirajapinta sallii ohjelmointikoodin käyttää ajonaikaisen moottorin sisäosia.
Toinen tapa, jolla metaprogramming toimii, on antaa ohjelmien kirjoittaa muita ohjelmia dynaamisen suoritusprosessin kautta. Tässä tapauksessa merkkijonolausekkeita käytetään tässä prosessissa. Vaikka samaa kieltä voidaan käyttää näissä kahdessa prosessissa, ei ole epätavallista, että kielet suosivat yhtä prosessia toista.
Metaprogramming toimii myös kiertämällä kieltä. Se mahdollistaa kielten muuttamisen ohjelmanmuutosjärjestelmien kautta. Tämä menettely antaa metaprogrammoinnille vapauden käyttää kieliä, vaikka kieli ei käyttäisi metaprogrammointiominaisuuksia.
Lähdekoodia ei tarvita metaprogrammointiin. Se voidaan tehdä inkrementaalikokoelman tai ajonaikaisesti vaihdettavien ohjelmien avulla. Tietokoneen langaugae Lisp on metaprogramming -prosessin suosikkikieli. Tämä johtuu tämän tyyppisen tietokoneen kielen yksinkertaisuudesta ja sen tehosta.
Metaprogramming, joka hyödyntää lisp -kieltä, mahdollistaa koodin arvioinnin ohjelman määrittämisjakson aikana, toisin kuin ajonaika. Tämä prosessi tekee metaprogrammointikielen ja isäntäohjelmointikielen samaksi. Kun tämä tapahtuu, nämä Lisp -rutiinit voidaan kierrättää metaprogrammointiprosessia varten.
Muut kielet ovat käyttäneet tätä tarkkaa prosessia integroimalla ohjelmatulkin. Tämä tulkki toimii ohjelman tietojen kanssa. Verkkotunnuskohtaiset ohjelmointikielet metaprogrammoinnissa ovat toinen muoto, joka luo jäsentimet ja leksikaaliset analysaattorit. Niiden avulla käyttäjä voi käyttää säännöllisiä lausekkeita kielen määrittämiseen.