เมทาโปรแกรมมิง

เมทาโปรแกรมมิง (อังกฤษ: metaprogramming) คือเทคนิคการเขียนโปรแกรมคอมพิวเตอร์ ซึ่งจะทำงานโดยเขียนหรือจัดการโปรแกรมอื่น (หรือโปรแกรมของตัวเอง) เสมือนข้อมูลของโปรแกรม หรือสร้างงานบางส่วนขณะแปลโปรแกรมแล้วเติมเต็มงานที่เหลือขณะโปรแกรมทำงาน ในหลายกรณี เมทาโปรแกรมมิงช่วยให้โปรแกรมเมอร์สามารถประหยัดเวลาในการเขียนรหัสต้นฉบับที่เหมือนๆ กันจำนวนมากแทนที่จะเขียนทั้งหมดเองด้วยมือ อาจเรียกได้ว่าเป็นการทำงานแบบ "โปรแกรมที่เขียนโปรแกรม"ภาษาที่ใช้เขียน เมทาโปรแกรม (metaprogram) จะถูกเรียกว่าอภิภาษา (metalanguage) และภาษาที่ถูกโปรแกรมจัดการจะเรียกว่าภาษาจุดหมาย (object language) ความสามารถของภาษาที่เป็นอภิภาษาภายในภาษาเดียวกันได้ เรียกว่าสมบัติสะท้อนของภาษาโปรแกรม (reflection/reflexivity) ซึ่งสมบัติสะท้อนเป็นคุณลักษณะหนึ่งของภาษาที่จะนำไปสู่เมทาโปรแกรมมิงได้สะดวกยิ่งขึ้นเมทาโปรแกรมมิงมักจะมีแนวทางการเขียนหนึ่งในสองทาง ทางแรกคือการเปิดเผยโครงสร้างภายในของเอนจินขณะทำงานไปเป็นรหัสต้นฉบับผ่านทางเอพีไอ ทางที่สองคือการจัดการนิพจน์สตริงที่รวมคำสั่งไปเป็นรหัสต้นฉบับแบบพลวัต