Kompilyatorning o'z nomida aks etgan muhim tarixiy xususiyati ( Ingliz kompilyatsiya -- birga yig'ish, tuzish), u bog'lanishni ham amalga oshirishi mumkin edi (ya'ni u ikki qismdan iborat - tarjimon va bog'lovchi). Buning sababi shundaki, alohida kompilyatsiya va biriktirishning alohida bosqichi sifatida bog'lash kompilyatorlarning paydo bo'lishidan ancha keyin paydo bo'lgan. Shu munosabat bilan, "kompilyator" atamasi o'rniga "tarjimon" atamasi ba'zan uning sinonimi sifatida ishlatiladi: yoki eski adabiyotlarda yoki ular dasturni mashina kodiga tarjima qilish qobiliyatini ta'kidlashni xohlaganlarida (va aksincha, ular ko'p fayllardan yig'ish qobiliyatini ta'kidlash uchun "kompilyator" atamasidan foydalanadilar).
Tarjimonlar.
Tarjimon (dasturlash tili) --
1) Tarjimani amalga oshiradigan dastur yoki texnik vosita.
2) Dastlabki dastur yoki so‘rovni operator bo‘yicha (buyruq bo‘yicha) qayta ishlash va bajarishni amalga oshiradigan tarjimon turi (to‘liq dasturni bajarmasdan tarjima qiladigan kompilyatordan farqli o‘laroq).
3) Buyruqlar yoki dastur bayonotlarini tahlil qiluvchi va ularni darhol bajaradigan dastur (ba'zan apparat).
4) Boshlang'ich dasturni satr bo'yicha tahlil qiladigan va bir vaqtning o'zida belgilangan amallarni bajaradigan va keyinchalik bajariladigan mashina tilida kompilyatsiya qilingan dasturni hosil qilmaydigan til protsessori.
Tarjimon turlari.
oddiy tarjimon tarjimon kiritishiga uning manba kodi etib kelganligi sababli dasturni buyruq bo'yicha (yoki satr bo'yicha) tahlil qiladi va darhol bajaradi (tarjimaning o'zi). Ushbu yondashuvning afzalligi - tezkor javob. Kamchiliklari shundaki, bunday tarjimon dastur matnidagi xatoliklarni faqat buyruqni (yoki qatorni) xato bilan bajarishga urinilganda aniqlaydi.
Kompilyator tipidagi tarjimon - bu dasturning dastlabki kodini oraliq ko'rinishga, masalan, bayt-kod yoki p-kodga o'tkazuvchi kompilyator tizimi va natijada olingan oraliq kodni (virtual mashina deb ataladigan) bajaradigan tarjimonning o'zi. ). Bunday tizimlarning afzalligi dasturni bajarishning yuqori tezligidir (boshlang'ich kod tahlilini alohida, bir martalik o'tishga olib tashlash va tarjimonda ushbu tahlilni minimallashtirish hisobiga). Kamchiliklari -- kattaroq manba talabi va to'g'ri manba kodiga bo'lgan talab. U Java, PHP, Python, Perl (baytkod ishlatiladi), REXX (manba kodini tahlil qilish natijasi saqlanadi) kabi tillarda, shuningdek, turli xil ma'lumotlar bazasi tizimlarida (p-kod ishlatiladi) qo'llaniladi.
Agar kompilyatsiya tipidagi tarjimon komponentlarga bo'lingan bo'lsa, til kompilyatori va minimallashtirilgan manba kod tahliliga ega oddiy tarjimon olinadi. Bundan tashqari, bunday tarjimonning manba kodi matn formatida bo'lishi yoki faqat shu tarjimon tushunadigan bayt-kod bo'lishi shart emas, u ba'zi mavjud apparat platformasining mashina kodi bo'lishi mumkin. Masalan, QEMU, Bochs, VMware kabi virtual mashinalar x86 oilasi protsessorlari uchun mashina kodi tarjimonlarini o'z ichiga oladi.
Ba'zi tarjimonlar (masalan, Lisp, Scheme, Python, BASIC va boshqalar uchun) dialog rejimida yoki o'qish-hisoblash-chop etish tsikli (o'qish-baholash-chop etish tsikli, REPL) deb ataladigan rejimda ishlashi mumkin. Bu rejimda tarjimon to‘liq til konstruksiyasini (masalan, Lispda s-ifodasini) o‘qiydi, uni bajaradi, natijalarni chop etadi va keyin foydalanuvchi keyingi konstruksiyaga kirishini kutishni davom ettiradi.
To'rtinchi til noyob bo'lib, u kirish ma'lumotlarini talqin qilish va kompilyatsiya qilish rejimida ishlashga qodir, bu sizga istalgan vaqtda, manba kodini tarjima qilish paytida ham, dasturning ishlashi paytida ham ushbu rejimlar o'rtasida almashish imkonini beradi.
Shuni ham ta'kidlash kerakki, talqin qilish rejimlari nafaqat dasturiy ta'minotda, balki apparatda ham mavjud. Shunday qilib, ko'pgina mikroprotsessorlar o'rnatilgan mikrodasturlar yordamida mashina kodini sharhlaydilar va x86 oilasi protsessorlari Pentium dan boshlab (masalan, Intel P6 arxitekturasida) mashina kodini bajarish jarayonida uni ichki formatga (ketma-ketlikda) oldindan tarjima qiladilar. mikro-operatsiyalar).
Oddiy tarjimonning algoritmi:
2. ko'rsatmani tahlil qilish va tegishli harakatlarni belgilash;
3. tegishli choralar ko'rish;
4. agar dasturni tugatish shartiga erishilmasa, keyingi yo'riqnomani o'qing va 2-bandga o'ting.
Tarjimonlarning afzalliklari va kamchiliklari.
Afzalliklari:
1) Katta talqin qilingan dasturlarning ko'chishi -- dastur tegishli tarjimonga ega bo'lgan har qanday platformada ishlaydi.
2) Qoida tariqasida, manba kodlaridagi xatolarni tashxislashning yanada rivojlangan va vizual vositalari.
3) Dasturning manba kodlarini tuzatishni soddalashtirish.
4) An'anaviy kompilyatorlardan keyin olingan mashina kodiga nisbatan kichikroq kod o'lchamlari.
Kamchiliklari:
1) Interpretatsiya qilinadigan dasturni tarjimon dasturisiz alohida bajarib bo'lmaydi. Tarjimonning o'zi juda ixcham bo'lishi mumkin.
2) Interpretatsiya qilingan dastur sekinroq ishlaydi, chunki dastlabki kodni oraliq tahlil qilish va uni bajarishni rejalashtirish dastlabki kodni kompilyatsiya qilish mumkin bo'lgan mashina kodini to'g'ridan-to'g'ri bajarish bilan solishtirganda qo'shimcha vaqt talab qiladi.
3) Kodni optimallashtirish deyarli yo'q, bu talqin qilingan dasturlarning tezligida qo'shimcha yo'qotishlarga olib keladi.
Bog'lovchi.
Do'stlaringiz bilan baham: |