Apa itu Metaprogramming?

Metaprogramming adalah proses menulis program komputer yang, pada gilirannya, menulis program lain. Proses metaprogramming memungkinkan fleksibilitas yang lebih besar untuk pemrogram komputer karena pekerjaan yang biasanya dilakukan selama periode runtime dialokasikan ke periode waktu kompilasi. Proses ini membebaskan waktu programmer untuk fokus pada tugas-tugas lain karena mengurangi waktu yang dibutuhkan untuk menulis kode program secara manual. Kompilasi ulang tidak diperlukan karena metaprogramming memungkinkan program untuk mengatasi situasi baru dengan efisiensi yang lebih besar. “Metalanguage” adalah istilah yang diberikan untuk bahasa komputer yang digunakan oleh metaprogram.

Bahasa objek adalah bahasa komputer dari program-program yang ditulis oleh proses pemrograman meta. Refleksivitas adalah istilah yang diberikan untuk bahasa meta, yang juga dapat menghasilkan metaprogramming. Metaprogramming bekerja dengan berbagai cara. Salah satu caranya adalah agar antarmuka pemrograman aplikasi mengizinkan kode pemrograman untuk mengakses bagian dalam mesin runtime.

Cara lain metaprogramming bekerja adalah dengan mengizinkan program untuk menulis program lain melalui proses eksekusi dinamis. Dalam hal ini, ekspresi string digunakan dalam proses ini. Meskipun bahasa yang sama dapat digunakan dalam dua proses ini, tidak jarang bahasa lebih menyukai satu proses daripada yang lain.

Metaprogramming juga bekerja dengan menghindari bahasa. Hal ini memungkinkan untuk perubahan bahasa melalui sistem transformasi program. Prosedur ini memberikan metaprogramming kebebasan untuk menggunakan bahasa bahkan jika bahasa tersebut tidak menggunakan karakteristik metaprogramming.

Kode sumber tidak diperlukan untuk metaprogramming. Ini dapat dilakukan dengan kompilasi tambahan atau dengan program yang dapat diubah-runtime. Bahasa komputer Lisp adalah bahasa yang disukai untuk proses metaprogramming. Ini karena kesederhanaan bahasa komputer jenis ini serta kekuatannya.

Metaprogramming yang menggunakan bahasa Lisp bekerja dengan memungkinkan evaluasi kode selama periode waktu definisi program, berbeda dengan periode runtime. Proses ini membuat bahasa metaprogramming dan bahasa pemrograman host sama. Ketika ini terjadi, rutinitas Lisp ini dapat didaur ulang untuk proses metaprogramming.
Bahasa lain telah menggunakan proses yang tepat ini dengan integrasi juru program. Interpreter ini bekerja dengan data dalam program. Bahasa pemrograman khusus domain dalam metaprogramming adalah bentuk lain yang membuat parser dan penganalisis leksikal. Ini memungkinkan pengguna untuk menggunakan ekspresi reguler untuk menentukan bahasa.