Mis on metaprogrammeerimine?

Metaprogrammeerimine on arvutiprogrammide kirjutamise protsess, mis omakorda kirjutavad teisi programme. Metaprogrammeerimisprotsess võimaldab arvutiprogrammeerijatele suuremat paindlikkust, kuna tavaliselt käitusperioodi jooksul tehtud töö jaotatakse kompileerimisaja perioodile. See protsess vabastab programmeerija aega muudele ülesannetele keskendumiseks, kuna see vähendab programmi koodi käsitsi kirjutamiseks kuluvat aega. Ümberkompileerimine pole vajalik, kuna metaprogrammeerimine võimaldab programmidel uute olukordadega tõhusamalt toime tulla. “Metakeel” on mõiste, mis antakse arvutikeelele, mida metaprogramm kasutab.

Objektikeel on nende programmide arvutikeel, mis on kirjutatud metaprogrammeerimisprotsessiga. Refleksiivsus on metakeelele antud termin, mis võib kaasa tuua ka metaprogrammeerimise. Metaprogrammeerimine töötab mitmel viisil. Üks võimalus on see, et rakenduste programmeerimisliides võimaldab programmeerimiskoodil juurdepääsu käitusmootori sisemustele.

Teine viis, kuidas metaprogrammeerimine töötab, on lubada programmidel dünaamilise täitmisprotsessi kaudu kirjutada teisi programme. Sel juhul kasutatakse selles protsessis stringi avaldisi. Kuigi nendes kahes protsessis saab kasutada sama keelt, ei ole ebatavaline, et keeled eelistavad üht protsessi teisele.

Metaprogrammeerimine töötab ka keelest mööda hiilides. See võimaldab muuta keeli programmi teisendussüsteemide kaudu. See protseduur annab metaprogrammeerimisele vabaduse keeli kasutada isegi siis, kui keel ei kasuta metaprogrammeerimise omadusi.

Metaprogrammeerimiseks pole lähtekoodi vaja. Seda saab teha järkjärgulise kompileerimise või käitusajal muudetavate programmide abil. Arvutikeel Lisp on metaprogrammeerimisprotsessi eelistatud keel. Selle põhjuseks on seda tüüpi arvutikeele lihtsus ja selle võimsus.

Lisp-keelt kasutav metaprogrammeerimine võimaldab erinevalt käitusaja perioodist koodi hinnata programmi määratlemise ajaperioodil. See protsess muudab metaprogrammeerimiskeele ja hosti programmeerimiskeele samaks. Kui see juhtub, saab neid Lisp-rutiine metaprogrammeerimisprotsessi jaoks taaskasutada.
Teised keeled on kasutanud seda täpset protsessi koos programmitõlgi integreerimisega. See tõlk töötab programmis olevate andmetega. Domeenispetsiifilised programmeerimiskeeled metaprogrammeerimises on veel üks vorm, mis loob parsereid ja leksikaalanalüsaatoreid. Need võimaldavad kasutajal kasutada keele määratlemiseks regulaaravaldisi.