Metaprogramming?

Metaprogramming adalah teknik pemrograman dimana code yang kita tulis akan menulis code yang lain atau melakukan introspect terhadap dirinya sendiri. Kata meta yang merupakan awalan dari kata metaprogramming memiliki arti abstraksi. Teknik metaprogramming bekerja pada dua tingkatan abstraksi secara simultan. Untuk melakukan metaprogramming dapat digunakan berbagai macam bahasa pemrograman, tetapi yang paling populer adalah bahasa pemrograman dinamis. Mengapa bahasa dinamis? Karena bahasa dinamis memiliki kemampuan manipulasi code layaknya data pada saat runtime. Walaupun reflection juga tersedia pada bahasa statis seperti Java dan C#, akan tetapi tidak bisa setransparan seperti pada bahasa dinamis macam Ruby, Python, dan Lisp. Hal ini karena pada bahasa statis, code dan data memiliki tingkatan yang berbeda pada saat runtime.

Untuk mencegah duplikasi code yang sama biasanya kita membuat suatu fungsi. Hal ini disebut dengan instilah functional abstraction. Salah satu fungsi dari metaprogramming juga mirip dengan ini, namun bukan untuk mencegah duplikasi code melainkan mencegah duplikasi konsep. Singkat kata, redundansi code dapat difaktorkan menjadi fungsi, redundansi fungsi atau pattern dapat (walaupun tidak selalu) difaktorkan menggunakan teknik metaprogramming.

Metaprogramming dibuat untuk kesederhanaan. Namun metaprogramming memiliki berbagai resiko yang cukup berbahaya, misalnya:

  • Code sulit dipelihara
  • Performa turun drastis
Dengan pemahaman yang matang tentang teknik metaprogramming, hal-hal tersebut dapat dihindari. Selamat belajar metaprogramming.