Metaprogramming, sırayla başka programlar yazan bilgisayar programları yazma işlemidir. Metaprogramlama işlemi, bilgisayar programcılarına daha fazla esneklik sağlar, çünkü genellikle çalışma zamanı süresince yapılan işler derleme zaman dilimine tahsis edilir. Bu işlem, programcının diğer görevlere odaklanma süresini boşaltır, çünkü program kodunu manuel olarak yazma süresini kısaltır. Yeniden programlama gerekli değildir, çünkü metaprogramlama, programların yeni durumlarla daha verimli şekilde başa çıkmalarını sağlar. "Metalanguage", metaprogramın kullandığı bilgisayar diline verilen terimdir.
Nesne dili, meta programlama işlemi tarafından yazılan programların bilgisayar dilidir. Refleksivite, meta programlamaya da neden olan meta dillemeye verilen bir terimdir. Metaprogramming çeşitli şekillerde çalışır. Bunun bir yolu, uygulama programlama arayüzünün programlama kodunun çalışma zamanı motorunun iç taraflarına erişmesine izin vermesidir.
Metaprogramlamanın çalışmasının bir başka yolu, programların dinamik yürütme işlemi ile diğer programları yazmalarını sağlamaktır. Bu durumda, bu işlemde dize ifadeleri kullanılır. Aynı dil bu iki işlemde de kullanılabilmesine rağmen, dillerin bir süreci diğerine tercih etmesi olağan değildir.
Metaprogramming, dili çevreleyerek de çalışır. Program dönüşüm sistemleri aracılığıyla dillerin değiştirilmesine olanak tanır. Bu prosedür, dil herhangi bir meta programlama özelliği kullanmasa bile, dilleri kullanma özgürlüğü sağlar.
Metaprogramming için bir kaynak koduna gerek yoktur. Artımlı bir derleme veya çalışma zamanı tarafından değiştirilebilir programlar tarafından yapılabilir. Bilgisayar langaugae Lisp metaprogramming işlemi için tercih edilen dildir. Bunun nedeni, bu tür bilgisayar dilinin sadeliği ve onun gücünden kaynaklanıyor.
Lisp dilini kullanan metaprogramming, programın tanım süresi boyunca kodun çalışma zamanı döneminin aksine değerlendirilmesine izin vererek çalışır. Bu işlem meta-programlama dilini ve ana bilgisayar programlama dilini aynı kılar. Bu gerçekleştiğinde, bu Lisp yordamları metaprogramming işlemi için geri dönüştürülebilir.
Diğer diller bu işlemi bir program yorumlayıcısının entegrasyonuyla kullanmıştır. Bu tercüman programdaki verilerle çalışır. Metaprogramlama alanındaki etki alanına özgü programlama dilleri, ayrıştırıcılar ve sözcüksel analizörler oluşturan başka bir formdur. Bu, kullanıcının dili tanımlamak için normal ifadeler kullanmasına izin verir.


