Kamis, 06 Mei 2010

meta language

Metaprogramming adalah penulisan dari program komputer yang menulis atau memanipulasi program lain (atau sendiri) sebagai data, atau bagian dari yang melakukan pekerjaan pada waktu kompilasi yang dilakukan di lain waktu berjalan. Dalam banyak kasus, ini memungkinkan pemrogram untuk mendapatkan lebih banyak dilakukan dalam jumlah yang sama seperti waktu mereka akan mengambil semua untuk menulis kode secara manual.
Bahasa yang ditulis metaprogram disebut metalanguage. Bahasa program yang dimanipulasi disebut objek bahasa. Kemampuan sebuah bahasa pemrograman yang akan sendiri metalanguage disebut refleksi atau reflexivity.
Refleksi adalah bahasa fitur yang berharga untuk memfasilitasi metaprogramming. Memiliki program itu sendiri sebagai bahasa pertama-kelas tipe data (seperti di pelat atau Rebol) juga sangat berguna. Generik program invokes sebuah metaprogramming fasilitas dalam bahasa, dalam mendukung bahasa-bahasa itu.
Metaprogramming biasanya bekerja melalui salah satu dari dua cara. Cara pertama adalah untuk mendedahkan sifat-sifat yang menjalankan mesin-waktu ke kode program melalui antarmuka pemrograman aplikasi (API). Pendekatan yang kedua adalah dinamis pelaksanaan ekspresi string yang berisi perintah program. Dengan demikian, "Program-program dapat menulis program". Meskipun kedua pendekatan dapat digunakan, kebanyakan bahasa cenderung bersandar terhadap satu atau yang lain.
Sebuah contoh sederhana dari metaprogram ini adalah bash script, yang merupakan contoh dari program generatif:
#! / bin / bash
# Metaprogram
echo '#! / bin / bash'> program
untuk ((I = 1; I <= 992; I + +)) lakukan
echo "Saya $ echo">> Program
selesai
chmod + x program
Script ini (atau program) yang baru menghasilkan 993 baris-program yang akan mencetak nomor 1-992 keluar. Ini hanya gambaran tentang bagaimana menggunakan kode untuk menulis kode lebih; bukan merupakan cara yang paling efisien untuk mencetak daftar nomor. Namun, programmer dapat menulis dan menjalankan metaprogram ini hanya dalam beberapa menit, dan akan dihasilkan persis 1000 baris kode yang dalam waktu yang lama.
Tidak semua metaprogramming melibatkan generatif pemrograman. Jika program dpt diubah pada runtime (seperti di pelat, Python, REBOL, Smalltalk, Ruby, PHP, Perl, Tcl, dasar, dan JavaScript), maka teknik dapat digunakan untuk melakukan metaprogramming tanpa benar-benar menghasilkan kode sumber.
Yang paling umum adalah alat metaprogramming compiler yang memungkinkan programmer untuk menulis program yang relatif singkat dalam bahasa tingkat tinggi dan menggunakannya untuk menulis yang setara bahasa assembly atau bahasa mesin program. Ini adalah sebuah alat untuk program mendasar, karena dalam banyak kasus, ia adalah amat tak berguna untuk menulis program bahasa mesin secara langsung.
Lainnya masih cukup umum metaprogramming adalah contoh penggunaan undang-undang dan yacc, dua alat bantu yang digunakan untuk menghasilkan analisis lexical dan parsers. Yacc sering digunakan sebagai compiler compiler, suatu alat untuk menghasilkan alat untuk menterjemahkan bahasa tingkat tinggi untuk program bahasa mesin.
A quine sangat metaprogram yang memproduksi sendiri sumber kode sebagai output.
Gaya satu program yang sangat berfokus pada metaprogramming adalah bahasa berorientasi program, yang dilakukan melalui domain spesifik-program bahasa.

Tidak ada komentar:

Posting Komentar