Metaprogramming เป็นกระบวนการในการเขียนโปรแกรมคอมพิวเตอร์ซึ่งก็คือการเขียนโปรแกรมอื่น ๆ กระบวนการ metaprogramming ช่วยให้มีความยืดหยุ่นมากขึ้นในการเขียนโปรแกรมคอมพิวเตอร์เนื่องจากงานที่ทำในช่วงระยะเวลารันไทม์จะถูกจัดสรรให้กับช่วงเวลารวบรวม กระบวนการนี้ทำให้เวลาโปรแกรมเมอร์เป็นอิสระในการมุ่งเน้นงานอื่น ๆ เพราะมันลดเวลาที่ใช้ในการเขียนรหัสของโปรแกรมด้วยตนเอง การคอมไพล์ใหม่นั้นไม่จำเป็นเพราะ metaprogramming อนุญาตให้โปรแกรมจัดการกับสถานการณ์ใหม่ที่มีประสิทธิภาพมากขึ้น "Metalanguage" เป็นคำที่ให้กับภาษาคอมพิวเตอร์ที่ metaprogram ใช้
ภาษาวัตถุเป็นภาษาคอมพิวเตอร์ของโปรแกรมเหล่านั้นซึ่งเขียนขึ้นโดยกระบวนการเขียนโปรแกรมเมตา Reflexivity เป็นคำที่ให้กับภาษาโลหะซึ่งยังสามารถนำมาใช้กับ metaprogramming Metaprogramming ทำงานได้หลากหลายวิธี วิธีหนึ่งคือสำหรับอินเตอร์เฟสโปรแกรมมิงแอ็พพลิเคชันเพื่ออนุญาตให้โค้ดโปรแกรมเข้าถึงส่วนของเอ็นจินรันไทม์
อีกวิธีหนึ่งที่ metaprogramming ทำงานก็คืออนุญาตให้โปรแกรมเขียนโปรแกรมอื่น ๆ ผ่านกระบวนการเรียกใช้แบบไดนามิก ในกรณีนี้นิพจน์สตริงถูกใช้ในกระบวนการนี้ แม้ว่าภาษาเดียวกันนี้สามารถใช้ในกระบวนการทั้งสองนี้ได้ แต่ก็ไม่ใช่เรื่องแปลกที่ภาษาจะให้ประโยชน์แก่กระบวนการหนึ่งมากกว่าอีกกระบวนการหนึ่ง
Metaprogramming ยังใช้งานได้โดยการหลีกเลี่ยงภาษา จะช่วยให้การเปลี่ยนแปลงของภาษาผ่านระบบการแปลงโปรแกรม ขั้นตอนนี้ให้ metaprogramming อิสระในการใช้ภาษาแม้ว่าภาษานั้นจะไม่ใช้คุณสมบัติของ metaprogramming ก็ตาม
ไม่จำเป็นต้องใช้ซอร์สโค้ดสำหรับ metaprogramming มันสามารถทำได้โดยการรวบรวมที่เพิ่มขึ้นหรือโดยโปรแกรมที่เปลี่ยนแปลงได้รันไทม์ คอมพิวเตอร์ langaugae Lisp เป็นภาษาที่ได้รับความนิยมสำหรับกระบวนการ metaprogramming นี่เป็นเพราะความเรียบง่ายของภาษาคอมพิวเตอร์ประเภทนี้และพลังของมัน
Metaprogramming ที่ใช้งานภาษา Lisp โดยอนุญาตให้มีการประเมินโค้ดในระหว่างช่วงเวลานิยามของโปรแกรมตรงกันข้ามกับช่วงเวลารันไทม์ กระบวนการนี้วาทกรรมภาษา metaprogramming และภาษาการเขียนโปรแกรมโฮสต์เดียวกัน เมื่อสิ่งนี้เกิดขึ้น Lisp รูทีนนี้สามารถนำกลับมาใช้ใหม่สำหรับกระบวนการ metaprogramming
ภาษาอื่น ๆ ได้ใช้กระบวนการที่แน่นอนนี้กับการรวมตัวแปลโปรแกรม ล่ามนี้ทำงานกับข้อมูลในโปรแกรม ภาษาการเขียนโปรแกรมเฉพาะโดเมนใน metaprogramming เป็นอีกรูปแบบหนึ่งที่สร้าง parsers และ lexical analyzers อนุญาตให้ผู้ใช้ใช้นิพจน์ทั่วไปเพื่อกำหนดภาษา


