" Bahasa Makro " beralih ke halaman ini . Untuk macrolanguages manusia , lihat macrolanguage 639 ISO .makro Editor jEdit ini
Sebuah
makro ( singkatan dari " macroinstruction " , dari bahasa Yunani μακρο -
'panjang' ) dalam ilmu komputer adalah aturan atau pola yang menentukan
bagaimana urutan masukan tertentu (sering urutan karakter ) harus
dipetakan ke urutan input pengganti ( juga sering urutan karakter ) sesuai dengan prosedur yang ditetapkan . Proses pemetaan yang instantiates ( transformasi ) penggunaan makro menjadi urutan tertentu dikenal sebagai ekspansi makro . Sebuah
fasilitas untuk menulis makro dapat diberikan sebagai bagian dari
aplikasi perangkat lunak atau sebagai bagian dari bahasa pemrograman . Dalam kasus yang pertama , macro digunakan untuk membuat tugas-tugas menggunakan aplikasi kurang berulang-ulang . Dalam
kasus terakhir , mereka adalah alat yang memungkinkan programmer untuk
memungkinkan penggunaan kembali kode atau bahkan merancang bahasa
domain-spesifik .
Macro
digunakan untuk membuat urutan instruksi komputasi tersedia bagi
programmer sebagai pernyataan program tunggal , membuat tugas
pemrograman lebih membosankan dan kurang rentan terhadap kesalahan . [ 1
] [ 2 ] ( Dengan demikian, mereka disebut " macro " karena besar blok kode dapat diperluas dari urutan kecil karakter ) . Macro
sering membiarkan parameter posisi atau kata kunci yang mendikte apa
program assembler bersyarat menghasilkan dan telah digunakan untuk
membuat seluruh program atau program suite sesuai dengan variabel
seperti sistem operasi , platform yang atau faktor lainnya . Istilah ini berasal dari " instruksi makro " , dan ekspansi tersebut awalnya digunakan dalam menghasilkan bahasa assembly kode .isi
Keyboard dan mouse macro
Macro
Keyboard dan macro tikus memungkinkan urutan pendek penekanan tombol
dan tindakan mouse untuk diubah menjadi lain, biasanya lebih memakan
waktu , urutan penekanan tombol dan tindakan mouse . Dengan cara ini , sering digunakan atau sekuens berulang penekanan tombol dan gerakan mouse dapat otomatis . Program terpisah untuk membuat macro ini disebut perekam makro .
Selama
tahun 1980 , program makro - awalnya SmartKey , maka superkey ,
KeyWorks , Prokey - sangat populer , pertama sebagai alat untuk secara
otomatis Format skenario , maka untuk berbagai tugas input pengguna . Program-program
ini didasarkan pada TSR ( Memutus dan tinggal penduduk ) modus operasi
dan diterapkan untuk semua input keyboard , tidak peduli di mana konteks
itu terjadi . Mereka
memiliki sampai batas tertentu jatuh ke usang menyusul munculnya mouse
digerakkan user interface dan ketersediaan keyboard dan mouse macro
aplikasi seperti pengolah kata dan spreadsheet , sehingga memungkinkan
untuk membuat macro Keyboard aplikasi - sensitif .
Macro
Keyboard miliki di masa yang lebih baru datang untuk hidup sebagai
metode mengeksploitasi ekonomi besar-besaran multiplayer online
role-playing game ( MMORPG ) . Dengan
tanpa lelah melakukan tindakan risiko membosankan, berulang-ulang ,
tapi rendah , pemain menjalankan makro bisa mendapatkan sejumlah besar
mata uang game atau sumber daya . Efek
ini bahkan lebih besar ketika seorang pemain makro menggunakan
mengoperasikan beberapa akun secara bersamaan , atau mengoperasikan
menyumbang sejumlah besar waktu setiap hari . Sebagai uang ini dihasilkan tanpa campur tangan manusia , secara dramatis dapat merusak ekonomi dari permainan . Untuk
alasan ini , menggunakan macro adalah pelanggaran terhadap KL or EULA
dari kebanyakan MMORPG , serta pengurus MMORPG berperang terus-menerus
mengidentifikasi dan menghukum para makro . [ 3 ]Aplikasi macro dan scripting
Keyboard dan mouse macro yang dibuat dengan aplikasi built -in fitur makro kadang-kadang disebut aplikasi macro . Mereka diciptakan dengan melakukan urutan sekali dan membiarkan aplikasi merekam tindakan . Sebuah
bahasa pemrograman yang mendasari makro , yang paling umum bahasa
scripting , dengan akses langsung ke fitur aplikasi juga mungkin ada .
Para programer ' editor teks Emacs ( singkatan dari " mengedit macro " ) mengikuti ide ini pada suatu kesimpulan . Akibatnya , sebagian besar editor terbuat dari macro . Emacs awalnya dirancang sebagai satu set macro dalam mengedit bahasa TECO , itu kemudian porting ke dialek Lisp .
Editor teks lain programmer , Vim ( keturunan vi ) , juga memiliki implementasi penuh macro . Hal
ini dapat merekam ke dalam register ( makro ) apa tipe orang pada
keyboard dan dapat diputar atau diedit seperti VBA macro untuk Microsoft
Office . Vim juga memiliki bahasa scripting yang disebut Vimscript [ 4 ] untuk membuat macro .
Visual Basic for Applications ( VBA ) adalah bahasa pemrograman yang termasuk dalam Microsoft Office . Namun , fungsinya telah berkembang dari dan menggantikan bahasa makro yang awalnya termasuk dalam beberapa aplikasi .virus makroArtikel utama: virus Makro ( komputasi )
VBA memiliki akses ke sebagian Microsoft panggilan sistem Windows dan mengeksekusi ketika dokumen dibuka . Hal ini membuat relatif mudah untuk menulis virus komputer di VBA , umumnya dikenal sebagai virus makro . Pada pertengahan 1990-an -ke-akhir , ini menjadi salah satu jenis yang paling umum dari virus komputer . Namun, selama 1990-an dan sampai saat ini , Microsoft telah menambal dan memperbarui program mereka . Selain itu, program anti -virus saat ini segera menangkal serangan tersebut .Teks macro substitusi
Bahasa
seperti C dan bahasa assembly memiliki sistem makro sederhana ,
diimplementasikan sebagai preprosesor untuk compiler atau assembler . C preprocessor macro bekerja dengan sederhana tekstual pencarian - dan - ganti pada token , daripada karakter , tingkat . Sebuah
penggunaan klasik macro dalam komputer typesetting sistem TeX dan
turunannya , di mana sebagian besar fungsi tersebut didasarkan pada
macro . MacroML adalah sistem eksperimental yang berusaha untuk mendamaikan mengetik statis dan sistem makro . Nemerle
telah diketik macro sintaks , dan salah satu cara yang produktif untuk
memikirkan ini macro sintaks adalah sebagai perhitungan multi-tahap . Contoh lain :
m4 adalah canggih , berdiri sendiri , prosesor makro .
TRAC
Makro Perpanjangan TAL , menyertainya Template Atribut Bahasa
SMX , untuk halaman web
ML / 1 Makro Bahasa Satu
General
Macroprocessor Tujuan adalah pencocokan pola prosesor makro kontekstual
, yang dapat digambarkan sebagai kombinasi dari ekspresi reguler , EBNF
dan AWK
SAM76
Minimac , prosesor makro concatenative .
troff dan nroff , untuk typesetting dan format halaman manual Unix .
bahasa embeddable
Beberapa bahasa , seperti PHP , dapat tertanam dalam teks bebas - format, atau kode sumber dari bahasa lain . Mekanisme
dimana fragmen code diakui ( misalnya , yang tanda kurung dengan < ?
Php , dan > ) mirip dengan bahasa makro tekstual , tetapi mereka
jauh lebih kuat , bahasa fitur lengkap .Lihat juga : Majelis bahasa # Macro dan Algoritmamacro prosedural
Macro
di PL / I bahasa ditulis dalam subset dari PL / I sendiri : compiler
mengeksekusi " pernyataan preprocessor " pada waktu kompilasi , dan
output dari eksekusi ini merupakan bagian dari kode yang dikompilasi . Kemampuan
untuk menggunakan bahasa prosedural akrab sebagai bahasa makro
memberikan kekuatan yang lebih besar daripada teks macro substitusi ,
dengan mengorbankan kompiler yang lebih besar dan lebih lambat .
Bingkai Teknologi macro bingkai memiliki sintaks perintah mereka sendiri tetapi juga dapat berisi teks dalam bahasa apapun . Setiap
frame merupakan sebuah komponen generik dalam hirarki subassemblies
bersarang , dan prosedur mengintegrasikan dirinya dengan bingkai
subassembly nya ( proses rekursif yang menyelesaikan konflik integrasi
dalam mendukung subassemblies tingkat yang lebih tinggi ) . Output adalah dokumen kustom , modul sumber biasanya compilable . Bingkai
Teknologi dapat menghindari proliferasi komponen serupa tapi agak
berbeda , sebuah isu yang telah menjangkiti pengembangan perangkat lunak
sejak penemuan macro dan subrutin .
Kebanyakan
bahasa assembly memiliki fasilitas makro prosedural kurang kuat ,
misalnya memungkinkan blok kode harus diulang N kali untuk loop membuka
gulungan , tetapi ini memiliki sintaks yang sama sekali berbeda dari
bahasa assembly yang sebenarnya .macro sintaksis
Sistem
makro yang bekerja pada tingkat pohon sintaks abstrak disebut macro
sintaksis dan melestarikan struktur leksikal program asli . Sementara
itu, sistem makro , seperti C preprocessor dijelaskan sebelumnya , yang
bekerja pada tingkat token leksikal tidak dapat mempertahankan struktur
leksikal andal . Implementasi
yang paling banyak digunakan sistem makro sintaksis ditemukan dalam
Lips -seperti bahasa seperti Common Lisp , Scheme , ISLISP dan Racket . Bahasa ini sangat cocok untuk gaya makro karena seragam mereka , kurung sintaks (dikenal sebagai S - ekspresi ) . Secara khusus , sintaks seragam membuatnya lebih mudah untuk menentukan doa macro . Lisp macro mengubah struktur program itu sendiri , dengan bahasa penuh tersedia untuk mengekspresikan transformasi tersebut . Sementara
macro sintaksis sering ditemukan dalam bahasa Lisp - seperti, mereka
juga tersedia dalam bahasa lain seperti Prolog , Dylan , Scala , dan
Nemerle .Awal macro Lisp
Awal
Lisp macro berupa FEXPRs , fungsi - seperti operator yang input tidak
nilai-nilai dihitung dengan argumen melainkan bentuk sintaksis dari
argumen , dan output yang adalah nilai yang akan digunakan dalam
perhitungan . Dengan
kata lain , FEXPRs dilaksanakan pada tingkat yang sama seperti Tarahan ,
dan memberikan jendela ke dalam lapisan meta - evaluasi. Hal ini umumnya ditemukan menjadi model sulit untuk alasan tentang efektif . [ 5 ]
Sebuah
alternatif , fasilitas kemudian disebut DEFMACRO , sebuah sistem yang
memungkinkan programmer untuk menentukan transformasi sumber - to-source
yang diterapkan sebelum program dijalankan .macro higienisArtikel utama: makro Higienis
Pada
pertengahan tahun delapan puluhan , sejumlah makalah [ 6 ] [ 7 ]
memperkenalkan gagasan higienis ekspansi makro ( sintaks - aturan ) ,
sistem berbasis pola dimana lingkungan sintaksis dari definisi makro dan
penggunaan makro yang berbeda , yang memungkinkan definer makro dan pengguna tidak perlu khawatir tentang sengaja variabel capture ( lih. transparansi referensial ) . Macro higienis telah distandarkan untuk Skema baik di R5RS dan standar R6RS . Standar R7RS mendatang juga akan mencakup macro higienis . Sejumlah
implementasi bersaing macro higienis ada seperti sintaks - aturan ,
sintaks - kasus , nama eksplisit, dan penutupan sintaksis . Kedua sintaks - aturan dan sintaks - kasus telah dibakukan dalam standar Scheme.
Baru-baru
ini , Racket telah menggabungkan gagasan macro higienis dengan " menara
evaluator " , sehingga waktu ekspansi sintaksis dari satu sistem makro
adalah runtime biasa blok lain kode , [ 8 ] dan menunjukkan bagaimana
menerapkan ekspansi interleaved dan parsing dalam bahasa non - kurung [ 9 ] .
Sejumlah bahasa lain selain Skema baik menerapkan macro higienis atau tidak melaksanakan sebagian sistem higienis . Contoh termasuk Scala , Julia , Dylan , dan Nemerle .aplikasi
rangka evaluasi
Sistem makro memiliki berbagai kegunaan . Mampu
memilih urutan evaluasi (lihat evaluasi malas dan fungsi non - ketat )
memungkinkan penciptaan konstruksi sintaksis baru (misalnya struktur
kontrol ) dibedakan dari yang dibangun ke dalam bahasa. Misalnya
, dalam dialek Lisp yang memiliki cond tetapi tidak memiliki jika ,
adalah mungkin untuk menentukan yang terakhir dalam hal mantan
menggunakan macro . Misalnya,
Skema memiliki kedua lanjutan dan macro higienis , yang memungkinkan
programmer untuk merancang abstraksi kontrol mereka sendiri, seperti
looping dan awal keluar konstruksi , tanpa perlu membangun mereka ke
dalam bahasa.Data daerah bahasa dan bahasa domain-spesifik
Selanjutnya,
macro memungkinkan untuk mendefinisikan bahasa data yang segera
dikompilasi ke dalam kode , yang berarti bahwa konstruksi seperti mesin
negara dapat diimplementasikan dengan cara yang alami dan efisien . [ 10
]Binding konstruksi
Macro juga dapat digunakan untuk memperkenalkan konstruksi pengikatan baru . Terkenal Yang paling contoh adalah transformasi membiarkan ke penerapan fungsi untuk satu set argumen .
Felleisen dugaan [ 11 ] bahwa ketiga kategori membentuk penggunaan yang sah utama makro dalam sistem tersebut . Lainnya
telah mengusulkan penggunaan alternatif macro , seperti macro anaforis
dalam sistem makro yang tidak higienis atau memungkinkan transformasi
higienis selektif .
Interaksi makro dan fitur bahasa lain telah menjadi areal produktif penelitian . Sebagai
contoh , komponen dan modul yang berguna untuk pemrograman skala besar ,
tetapi interaksi macro dan konstruksi ini lainnya harus didefinisikan
untuk digunakan bersama-sama. Modul dan komponen sistem yang dapat berinteraksi dengan macro telah diusulkan untuk Skema dan bahasa lainnya dengan macro . Misalnya,
bahasa Racket memperluas gagasan dari sistem makro sebuah menara
sintaksis , di mana makro dapat ditulis dalam bahasa termasuk macro ,
menggunakan kebersihan untuk memastikan bahwa lapisan sintaksis yang
berbeda dan memungkinkan modul untuk mengekspor macro untuk modul
lainnya .Macro untuk perangkat lunak mesin - independen
Macro biasanya digunakan untuk memetakan string pendek ( makro doa ) ke urutan panjang instruksi . Lain , kurang umum , penggunaan macro adalah untuk melakukan sebaliknya: untuk memetakan urutan instruksi ke string makro . Ini
adalah pendekatan yang dilakukan oleh stage2 System Programming Mobile,
yang menggunakan compiler makro dasar ( disebut SIMCMP ) untuk
memetakan instruksi tertentu yang ditetapkan dari sebuah komputer yang
diberikan kepada mitra macro mesin - independen. Aplikasi
(terutama kompiler ) ditulis dalam macro mesin - independen maka dapat
berjalan tanpa perubahan pada setiap komputer yang dilengkapi dengan
compiler makro dasar . Aplikasi
pertama berjalan dalam konteks seperti itu adalah sebuah kompiler makro
lebih canggih dan kuat , yang ditulis dalam bahasa makro mesin -
independen. Ini
makro compiler yang diterapkan pada dirinya sendiri , dalam mode
bootstrap , untuk menghasilkan versi terkompilasi , dan jauh lebih
efisien dari dirinya sendiri . Keuntungan
dari pendekatan ini adalah bahwa aplikasi yang kompleks dapat porting
dari komputer satu ke komputer yang sangat berbeda dengan sedikit usaha (
untuk setiap arsitektur mesin target , hanya penulisan compiler makro
dasar ) [ 12 ] [ 13 ] Munculnya . bahasa
modern pemrograman , terutama C , yang compiler yang tersedia di hampir
semua komputer , telah memberikan pendekatan semacam berlebihan . Hal ini, bagaimanapun , salah satu contoh pertama ( jika bukan yang pertama ) dari bootstrap compiler .
Referensi : http://en.wikipedia.org/wiki/Macro_%28computer_science%29
Next
« Next Post
« Next Post
Previous
Prev Post »
Prev Post »
0 komentar