Seorang penterjemah ialah... Jenis penterjemah. Penukaran dan penyiaran program. Piawaian bahasa pengaturcaraan C. Struktur penterjemah umum

Untuk menterjemah dari satu bahasa ke bahasa lain, program, seperti orang, memerlukan penterjemah atau, secara saintifik, penterjemah.

Penterjemah: konsep asas

Program sedemikian sebagai penterjemah adalah perwakilan linguistik pengiraan I ->P ->P (i). Jurubahasa ialah atur cara yang inputnya ialah atur cara P dengan beberapa data input X. Ia melaksanakan P pada X: I(P, x) = P(x). Hanya ada seorang penterjemah yang mampu melaksanakan segala-galanya program yang mungkin(yang boleh diwakili dalam sistem formal). Ini adalah penemuan yang sangat penting dan mendalam oleh Turing. Pemproses ialah penterjemah program dalam bahasa mesin. Tulis jurubahasa untuk bahasa tahap tinggi, sebagai peraturan, terlalu mahal, jadi ia diterjemahkan ke dalam bentuk yang lebih mudah untuk ditafsirkan. Sesetengah jenis penterjemah mempunyai nama yang sangat pelik. Program ini menterjemah program bahasa himpunan ke dalam bahasa mesin. Pengkompil membolehkan anda menterjemah daripada bahasa peringkat tinggi kepada bahasa peringkat rendah. Penterjemah ialah program yang mengambil sebagai input program dalam beberapa bahasa S dan, selepas pemprosesan, menghasilkan program dalam bahasa T. Oleh itu, kedua-duanya mempunyai semantik yang sama: P->X->Q. Oleh itu, untuk sebarang xP(x)=Q(x). Menterjemah keseluruhan program kepada sesuatu yang ditafsirkan dipanggil kompilasi pra-pelaksanaan atau kompilasi AOT. Penyusun AOT boleh digunakan secara berurutan. Yang terakhir sangat kerap menjadi penghimpun. Jadi, mari kita lihat contoh: Kod sumber -> Pengkompil (penterjemah) -> Kod pemasangan -> Pemasang (penterjemah) -> Kod mesin -> CPU (jurubahasa). Penyusunan dinamik atau dalam talian berlaku apabila sebahagian daripada program diterjemahkan manakala bahagian lain yang disusun sebelum ini dilaksanakan. Penterjemah JIT mengingati apa yang telah mereka lakukan sebelum ini, supaya tidak mengulangi kod sumber berulang kali. Mereka juga mampu membuat penyusunan dan penyusunan semula penyesuaian, yang berdasarkan kelakuan persekitaran masa jalan program. Banyak bahasa menyediakan keupayaan untuk melaksanakan kod semasa disiarkan, serta menyusun kod baharu semasa pelaksanaan program.

Siaran: peringkat

Proses penterjemahan terdiri daripada peringkat sintesis dan analisis. Secara skematik, proses ini kelihatan seperti ini: Kod sumber -> Penganalisis -> Perwakilan konsep -> Pensintesis (penjana) -> Kod sasaran. Ini disebabkan oleh sebab-sebab berikut:

- mana-mana kaedah lain adalah tidak sesuai;

— terjemahan dengan perkataan tidak berkesan.

Anda boleh menggunakan penyelesaian kejuruteraan berikut: jika anda perlu menulis penterjemah untuk bahasa sumber M dan bahasa sasaran N, anda hanya perlu menulis program mudah M+N (separa penyusun), dan bukan penterjemah penuh (kompleks) MxN . Walau bagaimanapun, dalam amalan, agak jarang perwakilan konseptual menjadi ekspresif dan cukup berkuasa untuk merangkumi semua bahasa sasaran dan sumber yang sedia ada. Walaupun beberapa pengguna dapat mendekati ini. Penyusun sebenar melalui pelbagai peringkat. Dengan mencipta pengkompil anda sendiri, anda tidak perlu membuat semula semua kerja keras yang telah dilakukan oleh pengaturcara dalam mencipta penjana dan pandangan. Anda boleh menterjemah bahasa anda terus ke dalam JavaScript atau C dan menggunakan penyusun bahasa C dan enjin JavaScript sedia ada untuk melakukan yang lain. Anda juga boleh menggunakan paparan perantaraan sedia ada dan mesin maya.

Rakaman penterjemah

Penterjemah boleh menjadi alat teknikal atau program yang menggunakan tiga bahasa: sumber, sasaran, asas. Mereka boleh ditulis dalam bentuk T, meletakkan sumber di sebelah kiri, sasaran di sebelah kanan dan pangkalan di bawah. Terdapat tiga jenis penyusun secara keseluruhan.

  1. Penterjemah ialah penyusun sendiri jika bahasa sumbernya sepadan dengan bahasa asas.
  2. Pengkompil yang bahasa sasarannya sama dengan bahasa asasnya dipanggil pemastautin diri.
  3. Jika bahasa sasaran dan asas berbeza, maka penterjemah adalah penyusun silang.

Mengapakah penting untuk membezakan antara jenis penyusun ini? Walaupun anda tidak pernah membina pengkompil yang benar-benar baik, adalah idea yang baik untuk mempelajari tentang teknologi di belakangnya, kerana semua konsep yang digunakan untuk tujuan ini digunakan di mana-mana dalam bahasa pertanyaan pangkalan data, pemformatan teks, seni bina komputer lanjutan, antara muka grafik, tugas umum pengoptimuman, terjemahan mesin, pengawal dan dalam mesin maya. Selain itu, jika anda perlu menulis prapemproses, pemuat, pemasang, penyahpepijat atau pemprofil, anda perlu melalui semua langkah yang sama seperti semasa menulis pengkompil. Anda juga boleh belajar tentang cara yang lebih baik untuk menulis program, kerana membangunkan penterjemah untuk bahasa pengaturcaraan bermakna lebih memahami semua kekaburan dan kehalusannya. Dengan mempelajari prinsip umum penyiaran, anda boleh menjadi pereka yang baik bahasa. Tetapi adakah ia benar-benar penting? Betapa hebatnya bahasa jika ia tidak dapat dilaksanakan dengan cekap?

Teknologi berskala besar

Teknologi penyusun merangkumi pelbagai bidang sains komputer yang berbeza. Ia termasuk teori bahasa formal, tatabahasa, seni bina komputer, penghuraian, kebolehkiraan, set arahan, CISC atau RISC, saluran paip, kitaran jam, kernel, dsb., serta kawalan jujukan, rekursi, pelaksanaan bersyarat, penguraian fungsi, lelaran, modulariti, penyegerakan, pengaturcaraan meta, pemalar, skop, templat, jenis output, anotasi, prototaip, strim, peti mel, monad, kad bebas, sambungan, memori transaksi, ungkapan biasa, polimorfisme, pewarisan, mod parameter dan sebagainya . Selain itu, untuk mencipta pengkompil, anda perlu memahami bahasa pengaturcaraan abstrak, algoritma dan struktur data, ungkapan biasa, algoritma grafik dan pengaturcaraan dinamik.

Reka bentuk penyusun. Masalah yang mungkin timbul apabila mencipta penterjemah sebenar

Apakah masalah yang mungkin timbul dengan bahasa sumber? Adakah ia mudah untuk disusun? Adakah terdapat prapemproses untuk ini? Bagaimanakah jenis diproses? Apakah kumpulan pas pengkompil yang digunakan - laluan tunggal atau berbilang laluan? Tahap pengoptimuman yang diingini juga patut diberi perhatian khusus. Siaran program yang pantas dan kotor dengan sedikit atau tiada pengoptimuman mungkin perkara biasa. Pengoptimuman yang berlebihan boleh melambatkan pengkompil, bagaimanapun, pada masa jalan kod terbaik mungkin berbaloi.

Kadar pengesanan ralat. Adakah perlu bagi penterjemah berhenti pada kesilapan pertama? Bilakah dia harus berhenti? Sekiranya anda mempercayai pengkompil untuk membetulkan ralat?

Set alat yang diperlukan

Jika dalam kes anda bahasa sumber tidak terlalu kecil, maka mempunyai penjana penganalisis dan pengimbas adalah prasyarat. Terdapat juga penjana kod khas, tetapi ia tidak begitu meluas.

Bagi jenis kod sasaran untuk dijana, anda perlu memilih daripada kod mesin tulen, ditambah atau maya. Anda juga boleh menulis bahagian input yang mencipta paparan perantaraan yang popular seperti LLVM, JVM, RTL. Anda juga boleh melakukan terjemahan dari sumber kepada kod sumber dalam Skrip Java atau C. Jika kita bercakap tentang format kod sasaran, di sini anda boleh memilih mudah alih kod mesin, kod mesin imej memori, bahasa pemasangan.

Penyasaran semula

Apabila menggunakan sejumlah besar penjana, adalah baik untuk mempunyai bahagian input yang sama. Juga atas sebab ini, untuk banyak bahagian input adalah lebih baik untuk mempunyai satu penjana.

Komponen penyusun

Mari kita senaraikan yang utama komponen berfungsi penterjemah yang menjana kod mesin jika program output ialah atur cara yang ditulis dalam C atau mesin maya:

— program input memasuki penganalisis leksikal, atau dalam erti kata lain, pengimbas, yang menukarnya menjadi aliran token;

— penganalisis sintaks (parser) membina pokok sintaks abstrak daripadanya;

— penganalisis semantik menguraikan maklumat semantik dan menyemak nod pokok untuk ralat;

- akibatnya, graf semantik dibina. Istilah ini merujuk kepada pokok sintaks abstrak dengan pautan yang mantap dan sifat tambahan;

— penjana kod perantaraan membina graf aliran (tuple dikumpulkan ke dalam blok utama);

— pengoptimum bebas mesin menjalankan pengoptimuman tempatan dan global, tetapi terutamanya kekal dalam rangka kerja subrutin, sambil memudahkan pengiraan dan mengurangkan kod berlebihan. Hasilnya hendaklah graf aliran yang diubah suai;

— untuk menyambungkan blok asas ke dalam kod garis lurus dengan pemindahan kawalan, penjana kod sasaran digunakan. Ia mencipta fail objek dalam pemasang dengan daftar visual, yang mungkin tidak begitu cekap;

— pengoptimum yang bergantung kepada mesin digunakan untuk mengagihkan memori antara daftar maya dan melaksanakan penjadualan arahan. Ia juga menukar atur cara yang ditulis dalam bahasa himpunan kepada pemasang sebenar menggunakan saluran paip.

— subsistem pengesanan ralat dan pengurus jadual simbol digunakan;

- pengimbasan dan analisis leksikal. Pengimbas digunakan untuk menukar strim aksara kod sumber kepada aliran token, mengalih keluar ulasan, ruang dan mengembangkan makro. Selalunya pengimbas menghadapi masalah berikut: sama ada untuk mengambil kira lekukan, kes atau komen bersarang.

Ralat yang mungkin berlaku semasa pengimbasan dipanggil leksikal. Ini termasuk yang berikut:

— simbol hilang daripada abjad;

— melebihi bilangan aksara dalam baris atau perkataan;

- rentetan tidak tertutup literal atau aksara;

- hujung fail dalam ulasan.

Penghuraian atau penghuraian digunakan untuk mengubah jujukan token menjadi pokok sintaks abstrak. Dalam kes ini, setiap nod pokok disimpan sebagai objek dengan medan bernama. Ramai daripada mereka sendiri adalah nod pokok. Tiada kitaran pada peringkat ini. Apabila membuat penghurai, anda perlu terlebih dahulu memberi perhatian kepada tahap kerumitan tatabahasa (LR atau LL) dan mengetahui sama ada terdapat sebarang peraturan nyahkekaburan. Malah, sesetengah bahasa memerlukan analisis semantik. Ralat yang berlaku pada peringkat ini dipanggil ralat sintaksis.

Analisis semantik

Semasa menjalankan analisis semantik, perlu, pertama sekali, untuk menyemak peraturan kesahihan dan menghubungkan bersama bahagian pepohon sintaks untuk membentuk graf semantik dengan memasukkan operasi untuk pemutus jenis tersirat, resolusi rujukan nama, dsb. Jelas sekali bahawa bahasa pengaturcaraan yang berbeza mempunyai set peraturan kesahihan yang berbeza. Apabila menyusun bahasa seperti Java, penterjemah mungkin menghadapi ralat berikut:

— berbilang pengisytiharan pembolehubah dalam skopnya;

— pelanggaran peraturan kebolehaksesan;

— kehadiran rujukan kepada nama yang tidak diisytiharkan;

— terlalu besar atau, sebaliknya, bilangan hujah yang tidak mencukupi semasa memanggil kaedah;

- jenis tidak sepadan.

Generasi

Dengan menjana kod perantaraan, graf aliran dihasilkan, yang terdiri daripada tupel yang dikumpulkan ke dalam blok asas. Selepas penjanaan kod, kod mesin sebenar diperolehi. Langkah pertama dalam penyusun tradisional untuk mesin RISC ialah mencipta pemasang dengan bilangan daftar maya yang tidak terhingga. Ini mungkin tidak akan berlaku untuk mesin CISC.

  • Alamat. Peranti berfungsi yang menukar alamat maya kepada alamat sebenar.
  • Dialog. Menyediakan penggunaan bahasa pengaturcaraan dalam mod perkongsian masa.
  • Berbilang pas. Membentuk modul objek atas beberapa paparan program sumber.
  • belakang. Sama seperti penerjemah. Lihat juga: decompiler, disassembler.
  • Pas tunggal. Membentuk modul objek dalam satu paparan berurutan program sumber.
  • Mengoptimumkan. Melakukan pengoptimuman kod dalam modul objek yang dijana.
  • Berorientasikan sintaksis (didorong secara sintaksis). Menerima sebagai input penerangan tentang sintaks dan semantik bahasa dan teks dalam bahasa yang diterangkan, yang diterjemahkan mengikut huraian yang diberikan.
  • Ujian. Satu set arahan makro bahasa himpunan yang membolehkan anda menetapkan pelbagai prosedur penyahpepijatan dalam program yang ditulis dalam bahasa himpunan.

Tujuan penyiaran- menukar teks dari satu bahasa ke bahasa lain, yang boleh difahami oleh penerima teks. Dalam kes program penterjemah, penerima ialah peranti teknikal (pemproses) atau program penterjemah.

Bahasa pemproses (kod mesin) biasanya peringkat rendah. Terdapat platform yang menggunakan bahasa mesin peringkat tinggi (contohnya, iAPX-432), tetapi ia adalah pengecualian kepada peraturan kerana kerumitan dan kos yang tinggi. Penterjemah yang menukar atur cara kepada bahasa mesin yang diterima dan dilaksanakan secara langsung oleh pemproses dipanggil penyusun.

Proses penyusunan biasanya terdiri daripada beberapa peringkat: analisis leksikal, sintaksis dan semantik (analisis Semantik Inggeris), penjanaan kod perantaraan, pengoptimuman dan penjanaan kod mesin yang terhasil. Di samping itu, program biasanya bergantung pada perkhidmatan yang disediakan oleh sistem pengendalian dan perpustakaan pihak ketiga (contohnya, fail I/O atau antara muka grafik), dan kod mesin program mesti dipautkan kepada perkhidmatan ini. Memautkan dengan perpustakaan statik dilakukan oleh penghubung atau pemaut (yang boleh program berasingan atau menjadi sebahagian daripada pengkompil), dan menghubungkan dengan sistem pengendalian dan perpustakaan dinamik dilakukan apabila pemuat mula melaksanakan program.

Kelebihan pengkompil: program disusun sekali dan tiada transformasi tambahan diperlukan setiap kali ia dilaksanakan. Sehubungan itu, pengkompil tidak diperlukan pada mesin sasaran yang mana program disusun. Kelemahan: Langkah kompilasi yang berasingan melambatkan penulisan dan penyahpepijatan dan menyukarkan untuk menjalankan program kecil, ringkas atau sekali sahaja.

Kaedah pelaksanaan lain ialah apabila program dilaksanakan menggunakan jurubahasa tiada siaran langsung. Perisian penterjemah memodelkan mesin yang kitaran pengambilan-eksekusinya beroperasi pada arahan dalam bahasa peringkat tinggi, bukannya pada arahan mesin. ini pemodelan perisian mencipta mesin maya, yang melaksanakan bahasa. Pendekatan ini dipanggil tafsiran tulen. Tafsiran tulen biasanya digunakan untuk bahasa dengan struktur mudah (contohnya, APL atau Lisp). Jurubahasa baris arahan perintah proses dalam skrip dalam UNIX atau fail kumpulan(.bat) dalam MS-DOS juga biasanya dalam mod tafsiran tulen.

Kelebihan jurubahasa tulen: ketiadaan tindakan perantaraan untuk terjemahan memudahkan pelaksanaan jurubahasa dan menjadikannya lebih mudah untuk digunakan, termasuk dalam mod dialog. Kelemahannya ialah jurubahasa mesti hadir pada mesin sasaran di mana program itu akan dilaksanakan.

Terdapat kompromi antara kompilasi dan tafsiran tulen dalam pelaksanaan bahasa pengaturcaraan, apabila jurubahasa, sebelum melaksanakan program, menterjemahkannya ke dalam bahasa perantaraan (contohnya, ke dalam bytecode atau p-code), lebih mudah untuk tafsiran (iaitu, kita bercakap tentang jurubahasa dengan penterjemah terbina dalam) . Kaedah ini dipanggil pelaksanaan bercampur. Contoh pelaksanaan bahasa campuran ialah Perl. Pendekatan ini menggabungkan kedua-dua kelebihan pengkompil dan jurubahasa (kelajuan pelaksanaan yang tinggi dan kemudahan penggunaan) dan keburukan (sumber tambahan diperlukan untuk menterjemah dan menyimpan program dalam bahasa perantaraan; jurubahasa mesti disediakan untuk melaksanakan program pada sasaran mesin). Juga, seperti dalam kes pengkompil, pelaksanaan bercampur memerlukan kod sumber bebas daripada ralat (leksikal, sintaksis dan semantik) sebelum pelaksanaan.

Siarkan Dan tafsiran - proses yang berbeza: Penterjemahan memperkatakan penterjemahan program dari satu bahasa ke bahasa lain, manakala pentafsiran bertanggungjawab untuk pelaksanaan program. Walau bagaimanapun, kerana tujuan terjemahan biasanya untuk menyediakan program untuk tafsiran, proses ini biasanya dipertimbangkan bersama. Sebagai contoh, bahasa pengaturcaraan sering dicirikan sebagai "disusun" atau "ditafsirkan", bergantung pada sama ada kompilasi atau tafsiran mendominasi penggunaan bahasa tersebut. Selain itu, hampir semua bahasa pengaturcaraan peringkat rendah dan generasi ketiga, seperti pemasangan, C atau Modula-2, disusun, manakala bahasa peringkat tinggi, seperti Python atau SQL, ditafsirkan.

Sebaliknya, terdapat interpenetrasi proses terjemahan dan tafsiran: jurubahasa boleh menyusun (termasuk kompilasi dinamik), dan penterjemah mungkin memerlukan tafsiran untuk pembinaan pengaturcaraan meta (contohnya, untuk makro dalam bahasa himpunan, kompilasi bersyarat dalam C, atau untuk templat dalam C++).

Selain itu, bahasa pengaturcaraan yang sama boleh diterjemahkan dan ditafsirkan, dan dalam kedua-dua kes mesti ada peringkat biasa analisis dan pengiktirafan konstruk dan arahan bahasa sumber. Ini terpakai pada kedua-dua perisian dan pelaksanaan perkakasan - contohnya, pemproses keluarga x86, sebelum melaksanakan arahan bahasa mesin, melaksanakan penyahkodannya, menyerlahkan medan operan (daftar, alamat memori, nilai segera), kedalaman bit, dsb. dalam opcode dan dalam pemproses Pentium dengan seni bina NetBurst, kod mesin biasanya diterjemahkan ke dalam urutan operasi mikro sebelum disimpan dalam cache dalaman.

Penterjemah (eng. penterjemah - penterjemah) ialah program penterjemah. Ia menukar program yang ditulis dalam salah satu bahasa pengaturcaraan ke dalam fail binari program yang terdiri daripada arahan mesin, atau secara langsung melaksanakan tindakan program.

Penterjemah dilaksanakan dalam bentuk penyusun, penterjemah, prapemproses dan emulator. Dari segi melakukan kerja, penyusun dan jurubahasa adalah jauh berbeza.

Pengkompil (eng. pengkompil - pengkompil, pengumpul)- membaca keseluruhan program, menterjemahkannya dan mencipta versi lengkap program dalam bahasa mesin, iaitu fail binari yang mengandungi senarai arahan mesin. Fail binari boleh boleh laku, perpustakaan, objek), ia dilaksanakan oleh sistem pengendalian tanpa penyertaan pengkompil.

Jurubahasa (eng. penterjemah - jurubahasa, penterjemah)— menterjemahkan program baris demi baris (satu pernyataan pada satu masa) ke dalam kod mesin (arahan pemproses, OS, persekitaran lain), melaksanakan pernyataan yang diterjemahkan (baris program), dan kemudian beralih ke baris seterusnya teks program. Jurubahasa tidak menjana fail boleh laku; ia sendiri melaksanakan semua tindakan yang ditulis dalam teks program sumber.

Setelah program disusun, program sumber mahupun pengkompil tidak diperlukan lagi. Pada masa yang sama, program yang diproses oleh jurubahasa mesti diterjemahkan semula ke dalam bahasa mesin setiap kali program dilancarkan.

Program yang disusun berjalan lebih pantas, tetapi yang ditafsirkan lebih mudah untuk diperbaiki dan diubah.

Setiap bahasa tertentu berorientasikan sama ada ke arah kompilasi atau tafsiran - bergantung pada tujuan ia dicipta. Sebagai contoh, Pascal biasanya digunakan untuk menyelesaikan masalah yang agak kompleks di mana kelajuan program adalah penting. Oleh itu, bahasa ini biasanya dilaksanakan menggunakan pengkompil.

Sebaliknya, BASIC telah dicipta sebagai bahasa untuk pengaturcara pemula, yang mana pelaksanaan program baris demi baris mempunyai kelebihan yang tidak dapat dinafikan.

Kadangkala terdapat pengkompil dan penterjemah untuk bahasa yang sama. Dalam kes ini, anda boleh menggunakan penterjemah untuk membangunkan dan menguji atur cara, dan kemudian menyusun atur cara nyahpepijat untuk meningkatkan kelajuan pelaksanaannya.

Prapemproses ialah penterjemah dari satu bahasa pengaturcaraan ke bahasa lain tanpa mencipta fail boleh laku atau pelaksanaan program.

Prapemproses adalah mudah untuk mengembangkan keupayaan bahasa dan kemudahan pengaturcaraan dengan menggunakan, pada peringkat penulisan program, dialek bahasa pengaturcaraan yang lebih mesra manusia dan menterjemahkannya dengan prapemproses ke dalam teks bahasa pengaturcaraan standard , yang boleh disusun oleh pengkompil standard.

Emulator- perisian dan/atau beroperasi dalam beberapa sistem pengendalian sasaran dan platform perkakasan perkakasan, direka untuk melaksanakan program yang dihasilkan dalam sistem pengendalian yang berbeza atau berjalan pada perkakasan yang berbeza daripada sasaran, tetapi membenarkan operasi yang sama dilakukan dalam persekitaran sasaran seperti dalam sistem simulasi.

Meniru bahasa termasuk sistem seperti Java, .Net, Mono, di mana, pada peringkat mencipta program, ia disusun menjadi bytecode khas dan diperoleh fail binari, sesuai untuk pelaksanaan dalam mana-mana persekitaran operasi dan perkakasan, dan kod bait yang terhasil dilaksanakan pada mesin sasaran menggunakan penterjemah mudah dan pantas (mesin maya).

Pengumpul semula, pembongkar- alat perisian yang direka untuk mentafsir kod binari dan membentangkannya dalam bentuk teks pemasangan atau teks bahasa pengaturcaraan lain, membolehkan anda menganalisis algoritma program sumber dan menggunakan teks yang terhasil untuk pengubahsuaian program yang diperlukan, contohnya , menukar alamat peranti luaran, mengakses sistem dan sumber rangkaian, mengenal pasti fungsi tersembunyi kod binari (contohnya, virus komputer atau program berniat jahat lain: Trojan, worm, keylogger, dll.).

kepada algoritma algoritma, struktur data dan pengaturcaraan DBMS Ya&MP 3GL 4GL 5GL teknologi prog.

Adakah kamu tahu, Apa pengabstrakan melalui parameterisasi ialah teknik pengaturcaraan yang membenarkan, menggunakan parameter, untuk mewakili set pengiraan berbeza yang hampir tidak terhad dengan satu program, yang merupakan abstraksi set ini.

Penterjemah

Memandangkan teks program yang ditulis dalam Pascal tidak dapat difahami oleh komputer, ia perlu diterjemahkan ke dalam bahasa mesin. Terjemahan program daripada bahasa pengaturcaraan ke bahasa kod mesin dipanggil siaran (terjemahan - terjemahan), dan ia dilakukan oleh program khas - penyiar.

Terdapat tiga jenis penterjemah: jurubahasa, penyusun dan penghimpun.

Jurubahasa dipanggil penterjemah yang melakukan pemprosesan dan pelaksanaan operator-demi-operator (arahan-demi-perintah) dan pelaksanaan program sumber.

Penyusun menukar (terjemah) keseluruhan atur cara ke dalam modul dalam bahasa mesin, selepas itu atur cara ditulis ke dalam ingatan komputer dan hanya kemudian dilaksanakan.

Asemblers menterjemah atur cara yang ditulis dalam bahasa himpunan (autokod) kepada atur cara dalam bahasa mesin.

Mana-mana penterjemah menyelesaikan tugas utama berikut:

Menganalisis atur cara yang diterjemahkan, khususnya menentukan sama ada ia mengandungi ralat sintaks;

Menghasilkan atur cara keluaran (selalunya dipanggil objek atau atur cara kerja) dalam bahasa arahan komputer (dalam beberapa kes, penterjemah menghasilkan atur cara keluaran dalam bahasa perantaraan, contohnya, bahasa himpunan);

Memperuntukkan memori untuk program keluaran (dalam kes paling mudah, ini terdiri daripada memberikan setiap serpihan program, pembolehubah, pemalar, tatasusunan dan objek lain alamat memori mereka sendiri).

Pengenalan kepada .Net dan Sharp

Pengaturcara menulis program dalam bahasa yang difahami oleh pengaturcara, dan komputer hanya melaksanakan program yang ditulis dalam bahasa kod mesin. Set alat untuk menulis, menyunting dan menukar program kepada kod mesin dan melaksanakannya dipanggil persekitaran pembangunan.

Persekitaran pembangunan mengandungi:

    Editor teks untuk memasukkan dan menyunting teks program

    Pengkompil untuk menterjemah program ke dalam bahasa arahan mesin

    Alat untuk nyahpepijat dan melancarkan program untuk pelaksanaan

    Perpustakaan kongsi dengan elemen perisian boleh guna semula

    Sistem bantuan, dsb.

Platform .NET, yang dibangunkan oleh Microsoft, termasuk bukan sahaja persekitaran pembangunan berbilang bahasa yang dipanggil Visual Studio .NET, tetapi banyak alat lain, seperti sokongan pangkalan data, E-mel dan lain-lain.

Tugas yang paling penting dalam pembangunan perisian moden ialah:

    Mudah alih - keupayaan untuk dijalankan pada pelbagai jenis komputer

    Keselamatan - kemustahilan tindakan yang tidak dibenarkan

    Kebolehpercayaan – operasi tanpa kegagalan dalam keadaan tertentu

    Penggunaan komponen siap sedia untuk mempercepatkan pembangunan

    Interaksi antara bahasa – penggunaan beberapa bahasa pengaturcaraan.

Semua tugasan ini diselesaikan dalam platform .NET.

Untuk memastikan kemudahalihan, pengkompil platform menterjemah program bukan ke dalam kod mesin, tetapi ke dalam bahasa perantaraan MSIL (Microsoft Intermediate Language) atau hanya ke dalam IL. IL tidak mengandungi sistem pengendalian atau perintah khusus jenis komputer. Program IL dilaksanakan oleh CLR (Common Language Runtime), yang sudah khusus untuk setiap jenis komputer. Terjemahan program IL ke dalam kod mesin komputer tertentu dilakukan oleh pengkompil JIT (Just In Time).

Gambar rajah pelaksanaan program pada platform .NET ditunjukkan dalam Rajah 1.

Pengkompil mencipta perhimpunan program - fail dengan sambungan . exe atau . dll, yang mengandungi kod IL. Pelaksanaan program dianjurkan oleh persekitaran CRL, yang memantau kesahihan operasi, melaksanakan peruntukan memori dan pembersihan, dan mengendalikan ralat pelaksanaan. Ini memastikan keselamatan dan kebolehpercayaan program.

Harga untuk kelebihan ini adalah penurunan dalam prestasi program dan keperluan untuk memasang .NET pada komputer untuk melaksanakan program siap sedia.

Jadi, .NET ialah platform pengaturcaraan.

C# (Sea Sharp) ialah salah satu bahasa pengaturcaraan platform .NET. Ia disertakan dengan Visual Studio - Visual Studio.NET (Versi 2008, 2010, 2012). Selain C#, Visual Studio.NET termasuk Visual Basic.NET dan Visual C++.

Salah satu sebab untuk Microsoft membangunkan bahasa baharu adalah untuk mencipta bahasa berorientasikan komponen untuk platform Rangka Kerja .NET.

Rajah.1 Gambar rajah pelaksanaan program dalam .NET

Rangka Kerja NET terdiri daripada dua bahagian:

    Pertama, ia termasuk perpustakaan besar kelas yang boleh dipanggil daripada program C#. Terdapat banyak kelas (kira-kira beberapa ribu). Ini menghapuskan keperluan untuk menulis semuanya sendiri. Oleh itu, pengaturcaraan dalam C# terdiri daripada penulisan kod sendiri, yang secara pilihan memanggil kelas yang disimpan dalam Rangka Kerja .NET.

    Kedua, ia termasuk .NET Runtime, Pengurus pelancaran dan kerja program siap sedia.

Platform .NET ialah persekitaran terbuka - pembangun pihak ketiga telah mencipta berpuluh-puluh penyusun untuk .NET kepada Ada bahasa, COBOL, Fortran, Lisp, Oberon, Perl, Python, dll.

Platform .NET sedang giat membangun - versi baharu platform ini sedang dikeluarkan. Menggunakan menu Projek Hartanah Ketahui versi platform .NET yang anda gunakan.

Secara teorinya, program .NET boleh dijalankan pada mana-mana sistem pengendalian yang .NET dipasang. Tetapi dalam praktiknya, satu-satunya platform rasmi untuk ini ialah sistem pengendalian Windows. Walau bagaimanapun, terdapat pelaksanaan .NET tidak rasmi untuk Linux seperti Unix, Mac OS X dan lain-lain (Mono ialah projek Rangka Kerja .NET perisian percuma).

Perkataan rapier

Perkataan rapier dalam huruf Inggeris (transliterasi) - rapira

Perkataan rapier terdiri daripada 6 huruf: a a dan p r r

Maksud perkataan rapier. Apa itu rapier?

Rapier (Rapier Jerman, dari rapière Perancis, asalnya Espadas roperas Sepanyol - secara harfiah, "pedang untuk pakaian" (iaitu, bukan untuk perisai), diputarbelitkan dalam bahasa Perancis la rapiere) - senjata bermata yang kebanyakannya menusuk, sejenis pedang...

my.wikipedia.org

Rapier (Rapier Jerman, dari rapière Perancis), senjata menusuk sukan, terdiri daripada bilah anjal keluli dan gagang (pengadang dan pemegang berbentuk cawan pelindung).

TSB. - 1969-1978

RAPIER (Rapier Jerman, dari rapiere Perancis). Senjata menindik sukan. Terdiri daripada bilah dan gagang keluli fleksibel (pengadang dan pemegang berbentuk cawan pelindung). Bilahnya mempunyai keratan rentas segi empat tepat, meruncing ke arah atas…

Ensiklopedia Olimpik. - 2006

RAPIRA, Extended Adapted Poplan-Interpreter, Editor, Archive, ialah bahasa pengaturcaraan pendidikan dan industri. Dibangunkan pada awal 80-an di USSR. Rapier adalah alat...

Ensiklopedia Bahasa Pengaturcaraan

Rapier (SAM)

Rapier ialah sistem peluru berpandu darat ke udara yang dibangunkan oleh British Angkatan Tentera untuk Tentera Udara Diraja. Ia sedang berkhidmat dengan tentera Australia, Great Britain, Indonesia, Singapura, Turki, Malaysia dan Switzerland.

my.wikipedia.org

Pertempuran Rapier

Rapier tempur - (dari bahasa Perancis rapiere) - menindik, menindik-memotong berbilah panjang X.0. dengan pemegang, dikenali di Eropah dari separuh ke-2 abad ke-17. Terdiri daripada bilah keluli rata atau bermuka lurus dengan runcing (untuk pertarungan R.)…

Rapier sukan

SPORTS RAPIRA - senjata bermata sukan, terdiri daripada bilah segi empat tepat yang fleksibel dalam keratan rentas dan pemegang boleh tanggal dengan pelindung berbentuk cawan bulat.

weapon.slovaronline.com

Rapier sukan ialah senjata bermata sukan yang terdiri daripada bilah segi empat tepat yang fleksibel dan pemegang boleh tanggal dengan pelindung berbentuk cawan bulat.

Petrov A. Kamus senjata berbilah dan perisai

Rapier (bahasa pengaturcaraan)

RAPIRA - Jurubahasa Poplan Disesuaikan Lanjutan, Editor, Arkib - bahasa pengaturcaraan prosedur. Dibangunkan pada awal 80-an di USSR sebagai cara peralihan daripada bahasa yang lebih mudah (khususnya, bahasa pendidikan Robik)…

my.wikipedia.org

Berpagar di Sukan Olimpik Musim Panas 1896 - kerajang

Pertandingan lawan pedang foil lelaki di Sukan Olimpik Musim Panas 1896 berlangsung pada 7 April.

Penterjemah, penyusun, jurubahasa

Lapan atlet dari dua negara mengambil bahagian. Mula-mula mereka bertanding dalam dua kumpulan empat atlet...

my.wikipedia.org

Berpagar di Sukan Olimpik Musim Panas 1900 - kerajang

Pertandingan lawan pedang foil lelaki di Sukan Olimpik Musim Panas 1900 berlangsung dari 14 hingga 19 dan 21 Mei. 54 atlet dari sepuluh negara mengambil bahagian.

my.wikipedia.org

Bahasa Rusia

Rapier.

Kamus ejaan morfem. - 2002

Berpagar di Sukan Olimpik Musim Panas 1900 - kerajang di kalangan maestro

Pertandingan lawan pedang foil di kalangan maestro lelaki pada Sukan Olimpik Musim Panas 1900 berlangsung dari 22 hingga 25 dan 27 hingga 28 Mei.

59 atlet dari tujuh negara mengambil bahagian.

my.wikipedia.org

Contoh penggunaan untuk rapier

Rapier dibuat sedemikian rupa sehingga ia tidak boleh masuk ke dalam; maksimum yang boleh kekal ialah lebam.

Berdasarkan tanda pada pemegang rapier, koperasi pergi ke kelab pagar dan mengetahui bahawa rapier telah dicuri dari sana setahun lalu.

Kuliah: Piawaian dan lesen perisian

Piawaian keluarga UNIX. Piawaian bahasa pengaturcaraan C. Definisi Antaramuka Sistem V (SVID). jawatankuasa POSIX. X/Open, OSF dan Open Group. Lesen untuk perisian dan dokumentasi.
Kandungan

  • 3.1. Standard keluarga UNIX
    • C Standard Bahasa Pengaturcaraan
    • Definisi Antara Muka Sistem V (SVID)
    • jawatankuasa POSIX
    • X/Open, OSF dan Open Group
  • 3.2. Lesen Perisian dan Dokumentasi

3.1. Standard keluarga UNIX

Sebab kemunculan piawaian untuk sistem pengendalian UNIX adalah kerana ia dialihkan ke banyak platform perkakasan. Versi pertamanya dijalankan pada perkakasan PDP, tetapi pada tahun 1976 dan 1978 sistem telah dialihkan ke Interdata dan VAX. Dari 1977 hingga 1981, dua cawangan yang bersaing telah dibentuk: AT&T UNIX dan BSD. Mungkin, matlamat untuk membangunkan piawaian adalah berbeza. Salah satunya adalah untuk menghalalkan keutamaan versinya, dan yang lain adalah untuk memastikan kemudahalihan sistem dan program aplikasi antara platform perkakasan yang berbeza. Dalam hal ini, mereka bercakap tentang mobiliti program. Sifat sedemikian adalah relevan dengan kod sumber program dan program boleh laku.

Bahan berikut dibentangkan dalam susunan kronologi penampilan piawai.

C Standard Bahasa Pengaturcaraan

Piawaian ini tidak terpakai terus kepada UNIX. Tetapi oleh kerana C ialah asas untuk kedua-dua keluarga ini dan sistem pengendalian lain, kami akan menyebut standard bahasa pengaturcaraan ini. Ia bermula dengan penerbitan pada tahun 1978 edisi pertama buku oleh B. Kernighan dan D. Ritchie. Piawaian ini sering dipanggil K&R. Pengaturcara yang menulis kerja ini bekerja pada UNIX dengan Ken Thompson. Lebih-lebih lagi, yang pertama mencadangkan nama sistem, dan yang kedua mencipta bahasa pengaturcaraan ini. Teks yang sepadan boleh didapati di Internet [ 45 ].

Walau bagaimanapun, piawaian industri untuk bahasa pengaturcaraan C dikeluarkan pada tahun 1989 oleh ANSI dan dinamakan X3. 159 – 1989. Inilah yang ditulis mengenai piawaian ini [ 46 ]:

"Standard itu diterima pakai untuk meningkatkan kemudahalihan program yang ditulis dalam bahasa C antara pelbagai jenis OS. Oleh itu, standard, sebagai tambahan kepada sintaks dan semantik bahasa C, termasuk cadangan pada kandungan perpustakaan standard. Sokongan untuk standard ANSI C ditunjukkan oleh nama simbolik yang dipratentukan _STDC."

Pada tahun 1988, berdasarkan piawaian bahasa pengaturcaraan ini, edisi kedua buku Kernighan dan Ritchie tentang C telah dikeluarkan. Ambil perhatian bahawa syarikat yang menghasilkan produk perisian untuk membangunkan program dalam bahasa C boleh membentuk perpustakaan mereka sendiri dan bahkan mengembangkan sedikit komposisi alat bahasa lain.

^ Definisi Antara Muka Sistem V (SVID)

Satu lagi arah dalam pembangunan piawaian UNIX adalah disebabkan oleh fakta bahawa bukan sahaja peminat berfikir tentang mencipta "standard". Pemaju utama sistem, dengan kemunculan banyak "varian", memutuskan untuk menerbitkan dokumen mereka sendiri. Maka datanglah piawaian yang dihasilkan oleh USG, organisasi yang telah mendokumentasikan versi UNIX AT&T sejak anak syarikat itu ditubuhkan untuk mencipta sistem pengendalian. Dokumen pertama muncul pada tahun 1984 berdasarkan SVR2. Ia dipanggil SVID (System V Interface Definition). Penerangan empat jilid dikeluarkan selepas keluaran SVR4. Piawaian ini telah ditambah dengan satu set program ujian SVVS (System V Verification Suite). Tujuan utama alat ini adalah untuk membolehkan pembangun menilai sama ada sistem mereka layak untuk nama Sistem V [ 14 ].

Ambil perhatian bahawa keadaan dengan standard SVID agak serupa dengan standard bahasa pengaturcaraan C. Buku yang diterbitkan oleh pengarang bahasa pengaturcaraan ini adalah salah satu piawaian, tetapi bukan satu-satunya. Piawaian C, yang dikeluarkan kemudian, adalah hasil kerja kolektif, telah melepasi peringkat perbincangan oleh orang awam dan, nampaknya, boleh menuntut peranan utama dalam senarai piawaian. Begitu juga, SVVS ialah satu set ujian yang membolehkan anda menilai sama ada sistem itu layak untuk nama Sistem V, hanya salah satu daripada versi UNIX. Ini tidak mengambil kira semua pengalaman pembangunan sistem operasi daripada pengeluar yang berbeza.

jawatankuasa POSIX

Kerja-kerja reka bentuk piawaian UNIX dimulakan oleh sekumpulan peminat pada tahun 1980. Matlamat telah dirumuskan untuk menentukan secara rasmi perkhidmatan yang disediakan oleh sistem pengendalian kepada aplikasi. Piawaian antara muka perisian ini menjadi asas kepada dokumen POSIX (Antaramuka Sistem Operasi Mudah Alih untuk Persekitaran Pengkomputeran - antara muka sistem pengendalian mudah alih untuk persekitaran pengkomputeran) [ 14 ]. Kumpulan kerja POSIX pertama telah dibentuk pada tahun 1985 daripada jawatankuasa piawaian berorientasikan UNIX /usr/group, juga dipanggil UniForum [ 47 ]. Nama POSIX dicadangkan oleh pengasas GNU Richard Stallman.

Versi awal POSIX menentukan set perkhidmatan sistem, diperlukan untuk pengendalian program aplikasi yang diterangkan dalam rangka antara muka yang ditentukan untuk bahasa C (antara muka panggilan sistem). Idea yang terkandung di dalamnya telah digunakan oleh jawatankuasa ANSI (American National Standards Institute) semasa mencipta standard bahasa C yang dinyatakan sebelum ini. Set awal fungsi yang disertakan dalam versi pertama adalah berdasarkan AT&T UNIX (versi SVR4 [ 48 ]). Tetapi pada masa hadapan, spesifikasi piawaian POSIX dipisahkan daripada OS tertentu ini. Pendekatan untuk mengatur sistem berdasarkan banyak fungsi sistem asas digunakan bukan sahaja dalam UNIX (contohnya, WinAPI Microsoft).

Pada tahun 1988, piawaian 1003.1 - 1988 telah diterbitkan, mentakrifkan API (Antaramuka Pengaturcaraan Aplikasi). Dua tahun kemudian versi baru telah diterima pakai piawaian IEEE 1003.1 - 1990. Ia mentakrifkan peraturan antara muka pengaturcaraan umum untuk kedua-dua panggilan sistem dan fungsi perpustakaan. Tambahan lagi padanya diluluskan, mentakrifkan perkhidmatan untuk sistem masa nyata, utas POSIX, dll. Piawaian POSIX 1003.2 – 1992 – takrifan adalah penting jurubahasa arahan dan utiliti.

Terdapat terjemahan [ 1 ] kedua-dua kumpulan dokumen ini, yang dipanggil: POSIX.1 (antara muka program aplikasi) dan POSIX.2 (jurubahasa arahan dan utiliti - antara muka pengguna). Terjemahan yang disebutkan mengandungi tiga bab: konsep asas, perkhidmatan sistem dan utiliti. Bab " Perkhidmatan sistem" dibahagikan kepada beberapa bahagian, setiap satunya mengumpulkan perkhidmatan dengan fungsi yang serupa. Contohnya, dalam salah satu bahagian "I/O Asas", bahagian ketujuh, dikhaskan untuk operasi direktori, menerangkan tiga fungsi (opendir, readdir dan closedir) Ia ditakrifkan dalam empat perenggan: "Sintaks", "Perihalan", "Nilai Pulangan" dan "Ralat".

Bagi yang sudah biasa bahasa algoritma Pengaturcaraan C, kami memberikan contoh serpihan penerangan.

Bahasa pengaturcaraan, penterjemah, penyusun dan jurubahasa

Malah, penerangan ini memberi gambaran tentang bagaimana "Antaramuka Panggilan Sistem" ditentukan. Dalam bahagian "Sintaks" tentang fungsi readdir, baris berikut diberikan:

#termasuk

#termasuk

struct dirent *readdir(DIR *dirp);

Perenggan kedua (“Penerangan”) mengandungi teks berikut:

"Jenis dan struktur data yang digunakan dalam definisi direktori ditakrifkan dalam fail dirent.h. Komposisi dalaman direktori ditentukan pelaksanaan. Apabila dibaca menggunakan fungsi readdir, objek jenis struct dirent terbentuk, mengandungi sebagai medan tatasusunan aksara d_name, yang mengandungi NUL yang ditamatkan aksara nama tempatan fail.

Readdir membaca elemen direktori semasa dan menetapkan penunjuk kedudukan ke elemen seterusnya. Direktori terbuka ditentukan oleh penunjuk dirp. Unsur yang mengandungi nama kosong, dilangkau."

Dan inilah yang diberikan dalam perenggan "Nilai pulangan":

"Readdir, apabila berjaya disiapkan, mengembalikan penunjuk kepada objek jenis struct dirent yang mengandungi elemen direktori yang dibaca. Elemen baca boleh ditulis ke ingatan statik dan bertindih dengan panggilan seterusnya yang digunakan pada direktori terbuka yang sama. Memanggil readdir pada direktori terbuka yang berbeza tidak bertindih maklumat yang boleh dibaca. Jika ralat berlaku atau penghujung fail dicapai, penunjuk nol dikembalikan."

Perenggan "Ralat dalam piawaian" menyatakan perkara berikut:

"Readdir dan closedir mengalami ralat. Dirp bukan penunjuk kepada direktori terbuka."

Contoh ini menunjukkan bagaimana perkhidmatan yang disediakan oleh aplikasi diterangkan. Keperluan untuk sistem pengendalian (pelaksanaan) ialah ia “...mesti menyokong semua yang diperlukan utiliti, fungsi, fail pengepala memastikan tingkah laku yang dinyatakan dalam standard. Pemalar _POSIX_VERSION mempunyai nilai 200112L [ 49 ]".

Dalam dunia teknologi komputer terdapat frasa sedemikian: "pengaturcaraan POSIX". Ini boleh dipelajari menggunakan pelbagai manual pada sistem pengaturcaraan dan sistem pengendalian UNIX (contohnya, [ 5 ]). Terdapat buku berasingan dengan tajuk ini [ 3 ]. Ambil perhatian bahawa mukadimah buku ini menyatakan bahawa ia menerangkan "... standard tiga kali ganda..." kerana ia berdasarkan versi POSIX 2003 terkini, yang berdasarkan tiga standard: IEEE Std 1003.1, standard teknikal Kumpulan Terbuka dan ISO/IEC 9945.

Bagaimanakah anda boleh mengesahkan bahawa sistem tertentu mematuhi piawaian POSIX? Memformalkan soalan sedemikian tidak semudah yang kelihatan pada pandangan pertama. DALAM versi moden 4 jenis pematuhan ditawarkan (empat makna semantik perkataan "pematuhan": penuh, antarabangsa, kebangsaan, lanjutan).

Dokumen yang sedang dipertimbangkan menyediakan senarai dua jenis alat antara muka: mandatori (jika boleh, ia diandaikan padat) dan pilihan. Yang terakhir mesti sama ada diproses mengikut cara yang ditetapkan atau mengembalikan nilai kod ENOSYS tetap yang menunjukkan bahawa fungsi itu tidak dilaksanakan.

Ambil perhatian bahawa set dokumen POSIX telah berubah selama bertahun-tahun. Tetapi pembangun versi baharu sentiasa cuba mengekalkan kesinambungan dengan versi sebelumnya sebanyak mungkin. Sesuatu yang baharu mungkin muncul dalam edisi yang lebih terkini. Sebagai contoh, dokumen 2004 menggabungkan empat bahagian [ 50 ]:

  • Jumlah Takrifan Asas (XBD) – takrif istilah, konsep dan antara muka yang biasa kepada semua jilid piawaian ini;
  • Kelantangan Antara Muka Sistem (XSH) – antara muka peringkat sistem dan pengikatannya kepada bahasa C, yang menerangkan antara muka wajib antara program aplikasi dan sistem pengendalian, khususnya – spesifikasi panggilan sistem;
  • Kelantangan Shell dan Utiliti (XCU) – takrif antara muka penterjemah arahan standard (yang dipanggil shell POSIX), serta fungsi asas utiliti Unix;
  • Rasional (Bermaklumat) volum (XRAT) – tambahan, termasuk sejarah, maklumat tentang standard.

Seperti edisi pertama, dokumen dalam bahagian utamanya menerangkan kumpulan perkhidmatan yang disediakan. Setiap elemen diterangkan di sana dalam perenggan berikut: NAMA (Nama), SINOPSIS (Sintaks), DISKRIPSI (Penerangan), NILAI PULANG (Nilai Pulangan), RALAT (Ralat) dan akhirnya CONTOH (Contoh).

Versi moden standard mentakrifkan keperluan untuk kedua-dua sistem pengendalian dan program aplikasi. Mari kita berikan contoh [ 51 ].

Fungsi readdir() mesti mengembalikan penunjuk kepada struktur yang sepadan dengan elemen direktori seterusnya. Sama ada elemen direktori bernama "titik" dan "titik-ke-titik" dikembalikan tidak ditentukan oleh standard. Dalam contoh ini, terdapat empat kemungkinan hasil, dan keperluan untuk program aplikasi ialah ia mesti dapat mengendalikan mana-mana daripadanya.

Dan sebagai kesimpulan, kami membentangkan petikan daripada kursus kuliah oleh Sukhomlinov ("PENGENALAN KEPADA ANALISIS TEKNOLOGI MAKLUMAT", Sukhomlinov V.A. Bahagian V. Metodologi dan sistem piawaian POSIX OSE), khusus untuk skop kebolehgunaan piawaian [ 52 ]:

"Skop kebolehgunaan piawaian POSIX OSE (Persekitaran Sistem Terbuka) adalah untuk menyediakan keupayaan berikut (juga dipanggil sifat keterbukaan) untuk sistem maklumat yang dibangunkan:

  • Mudah Alih Aplikasi pada Tahap Kod Sumber, i.e. menyediakan keupayaan untuk memindahkan program dan data yang dibentangkan dalam kod sumber bahasa pengaturcaraan dari satu platform ke platform yang lain.
  • Kebolehoperasian Sistem, i.e. menyokong kesalinghubungan antara sistem.
  • Kemudahalihan Pengguna, i.e. menyediakan keupayaan untuk pengguna bekerja pada platform yang berbeza tanpa latihan semula.
  • Kebolehsuaian kepada piawaian baharu (Penginapan Piawaian) yang berkaitan dengan pencapaian matlamat sistem terbuka.
  • Kebolehsuaian kepada teknologi maklumat baharu (Penginapan Teknologi Sistem baharu) berdasarkan kesejagatan struktur klasifikasi perkhidmatan dan kebebasan model daripada mekanisme pelaksanaan.
  • Skalabilitas platform aplikasi (Application Platform Scalability), mencerminkan keupayaan untuk memindahkan dan menggunakan semula perisian aplikasi berhubung dengan jenis dan konfigurasi platform aplikasi yang berbeza.
  • Kebolehskalaan sistem teragih (Distributed System Scalability), mencerminkan keupayaan perisian aplikasi berfungsi tanpa mengira pembangunan topologi dan sumber sistem teragih.
  • Ketelusan Pelaksanaan, iaitu. menyembunyikan ciri pelaksanaannya daripada pengguna di sebalik antara muka sistem.
  • Spesifikasi yang sistematik dan tepat bagi keperluan fungsi pengguna (User Functional Requirements), yang memastikan kesempurnaan dan kejelasan dalam menentukan keperluan pengguna, termasuk dalam menentukan komposisi piawaian yang berkenaan."

Ini membolehkan anda menyelesaikan masalah berikut:

  • penyepaduan sistem maklumat daripada komponen daripada pelbagai pengeluar;
  • kecekapan pelaksanaan dan pembangunan, berkat ketepatan spesifikasi dan pematuhan penyelesaian piawai, mencerminkan tahap saintifik dan teknikal lanjutan;
  • kecekapan pemindahan perisian aplikasi, terima kasih kepada penggunaan antara muka piawai dan ketelusan mekanisme untuk melaksanakan perkhidmatan sistem.

Piawaian juga secara rasmi mentakrifkan konsep penting sistem pengendalian berikut: pengguna; fail; proses; terminal; tuan rumah; nod rangkaian; masa; persekitaran linguistik dan budaya. Perumusan definisi sedemikian tidak diberikan di sana, tetapi operasi yang digunakan untuk mereka dan sifat-sifat yang wujud di dalamnya diperkenalkan.

Secara keseluruhan, terdapat lebih daripada tiga dozen elemen dalam senarai piawaian POSIX. Nama mereka secara tradisinya bermula dengan huruf "P", diikuti dengan nombor empat digit dengan simbol tambahan.

Terdapat juga nama kumpulan untuk piawaian POSIX1, POSIX2, dsb. Contohnya, POSIX1 dikaitkan dengan piawaian untuk antara muka OS asas (P1003.1x, dengan x sama ada kosong atau aksara daripada a hingga g; oleh itu, terdapat 7 dokumen dalam kumpulan ini), dan POSIX3 berkaitan dengan kaedah ujian (dua dokumen - P2003 dan P2003n ).

Penterjemah biasanya juga mendiagnosis ralat, menyusun kamus pengecam, menghasilkan teks program untuk pencetakan, dsb.

Siaran program- transformasi program yang dibentangkan dalam salah satu bahasa pengaturcaraan ke dalam program dalam bahasa lain dan, dalam erti kata tertentu, bersamaan dengan yang pertama.

Bahasa di mana program input dibentangkan dipanggil bahasa asal, dan program itu sendiri - kod sumber. Bahasa keluaran dipanggil Bahasa sasaran atau kod objek.

Konsep terjemahan digunakan bukan sahaja untuk bahasa pengaturcaraan, tetapi juga untuk bahasa komputer lain, seperti bahasa markup, serupa dengan HTML, dan bahasa semula jadi, seperti bahasa Inggeris atau Rusia. Walau bagaimanapun, artikel ini hanya mengenai bahasa pengaturcaraan, tentang bahasa semula jadi lihat terjemahan.

Jenis-jenis penterjemah

  • Alamat. Peranti berfungsi yang menukar alamat maya kepada alamat memori sebenar.
  • Dialog. Menyediakan penggunaan bahasa pengaturcaraan dalam mod perkongsian masa.
  • Berbilang pas. Membentuk modul objek atas beberapa paparan program sumber.
  • belakang. Sama seperti penerjemah. Lihat juga: decompiler, disassembler.
  • Pas tunggal. Membentuk modul objek dalam satu paparan berurutan program sumber.
  • Mengoptimumkan. Melakukan pengoptimuman kod dalam modul objek yang dijana.
  • Berorientasikan sintaksis (didorong sintaksis). Menerima sebagai input penerangan tentang sintaks dan semantik bahasa dan teks dalam bahasa yang diterangkan, yang diterjemahkan mengikut huraian yang diberikan.
  • Ujian. Satu set makro bahasa himpunan yang membolehkan anda menetapkan pelbagai prosedur penyahpepijatan dalam program yang ditulis dalam bahasa himpunan.

Perlaksanaan

Tujuan terjemahan adalah untuk menukar teks daripada satu bahasa kepada bahasa lain, yang boleh difahami oleh penerima teks. Dalam kes program penterjemah, penerima ialah peranti teknikal (pemproses) atau program penterjemah.

Terdapat beberapa contoh lain di mana seni bina siri yang dibangunkan komputer adalah berdasarkan atau sangat bergantung pada beberapa model struktur program. Oleh itu, siri GE/Honeywell Multics adalah berdasarkan model semantik untuk melaksanakan program yang ditulis dalam bahasa PL/1. Dalam Templat:Tidak diterjemahkan B5500, B6700 ... B7800 adalah berdasarkan model program masa jalan yang ditulis dalam bahasa ALGOL lanjutan. ...

Pemproses i432, seperti seni bina terdahulu ini, juga berdasarkan model semantik struktur program. Walau bagaimanapun, tidak seperti pendahulunya, i432 tidak berdasarkan model bahasa pengaturcaraan tertentu. Sebaliknya, matlamat utama pembangun adalah untuk menyediakan sokongan masa jalan langsung untuk kedua-duanya data abstrak(iaitu, pengaturcaraan dengan jenis data abstrak), dan untuk sistem pengendalian khusus domain. …

Kelebihan pengkompil: program disusun sekali dan tiada transformasi tambahan diperlukan setiap kali ia dilaksanakan. Sehubungan itu, pengkompil tidak diperlukan pada mesin sasaran yang mana program disusun. Kelemahan: Langkah kompilasi yang berasingan melambatkan penulisan dan penyahpepijatan dan menyukarkan untuk menjalankan program kecil, ringkas atau sekali sahaja.

Sekiranya bahasa sumber ialah bahasa himpunan ( bahasa aras rendah, dekat dengan bahasa mesin), maka penyusun bahasa sedemikian dipanggil penghimpun.

Kaedah pelaksanaan yang bertentangan ialah apabila program dilaksanakan menggunakan jurubahasa tiada siaran langsung. Perisian penterjemah memodelkan mesin yang kitaran pengambilan-eksekusinya beroperasi pada arahan dalam bahasa peringkat tinggi, bukannya pada arahan mesin. Simulasi perisian ini mencipta mesin maya yang melaksanakan bahasa. Pendekatan ini dipanggil tafsiran murni. Tafsiran tulen biasanya digunakan untuk bahasa dengan struktur mudah (contohnya, APL atau Lisp). Jurubahasa baris perintah memproses arahan dalam skrip dalam UNIX atau dalam fail kelompok (.bat) dalam MS-DOS, juga biasanya dalam mod tafsiran tulen.

Kelebihan jurubahasa tulen: ketiadaan tindakan perantaraan untuk terjemahan memudahkan pelaksanaan jurubahasa dan menjadikannya lebih mudah untuk digunakan, termasuk dalam mod dialog. Kelemahannya ialah jurubahasa mesti hadir pada mesin sasaran di mana program itu akan dilaksanakan. Dan harta jurubahasa tulen, bahawa ralat dalam atur cara yang ditafsirkan dikesan hanya apabila percubaan dibuat untuk melaksanakan arahan (atau baris) dengan ralat, boleh dianggap sebagai kelemahan dan kelebihan.

Terdapat kompromi antara kompilasi dan tafsiran tulen dalam pelaksanaan bahasa pengaturcaraan, apabila jurubahasa, sebelum melaksanakan program, menterjemahkannya ke dalam bahasa perantaraan (contohnya, ke dalam bytecode atau p-code), lebih mudah untuk tafsiran (iaitu, kita bercakap tentang jurubahasa dengan penterjemah terbina dalam) . Kaedah ini dipanggil pelaksanaan bercampur. Contoh pelaksanaan bahasa campuran ialah Perl. Pendekatan ini menggabungkan kedua-dua kelebihan penyusun dan jurubahasa (kelajuan pelaksanaan yang lebih tinggi dan kemudahan penggunaan) dan keburukan (sumber tambahan diperlukan untuk menterjemah dan menyimpan program dalam bahasa perantaraan; jurubahasa mesti disediakan untuk melaksanakan program pada sasaran mesin). Juga, seperti dalam kes pengkompil, pelaksanaan bercampur memerlukan kod sumber bebas daripada ralat (leksikal, sintaksis dan semantik) sebelum pelaksanaan.

Dengan peningkatan dalam sumber komputer dan pengembangan rangkaian heterogen (termasuk Internet), menghubungkan komputer pelbagai jenis dan seni bina, jenis baru tafsiran, di mana kod sumber (atau perantaraan) disusun ke dalam kod mesin secara langsung pada masa jalan, "dengan cepat". Bahagian kod yang telah dikompilasi dicache supaya apabila ia diakses semula, ia serta-merta menerima kawalan, tanpa penyusunan semula. Pendekatan ini dipanggil kompilasi dinamik.

Kelebihan kompilasi dinamik ialah kelajuan tafsiran program menjadi setanding dengan kelajuan pelaksanaan program dalam bahasa yang disusun konvensional, manakala program itu sendiri disimpan dan diedarkan dalam satu bentuk, bebas daripada platform sasaran. Kelemahannya ialah kerumitan pelaksanaan yang lebih besar dan keperluan sumber yang lebih besar daripada dalam kes penyusun ringkas atau jurubahasa tulen.

Kaedah ini berfungsi dengan baik untuk

Matlamat dan objektif disiplin. Konsep dan definisi asas. Ciri umum bahasa pengaturcaraan dan penterjemah. Struktur umum penterjemah. Pilihan untuk interaksi blok penterjemah.

Matlamat dan objektif disiplin

Pada masa ini bahasa buatan, yang menggunakan perwakilan teks untuk menerangkan bidang subjek, digunakan secara meluas bukan sahaja dalam pengaturcaraan, tetapi juga dalam bidang lain. Dengan bantuan mereka, struktur semua jenis dokumen, tiga dimensi alam maya, antara muka pengguna grafik dan banyak objek lain yang digunakan dalam model dan dalam dunia sebenar. Untuk membolehkan huraian teks ini disusun dengan betul, dan kemudian dikenali dan ditafsir dengan betul, kaedah khas analisis dan transformasinya digunakan. Kaedah ini berdasarkan teori bahasa dan tatabahasa formal, serta teori automata. Sistem perisian, direka untuk menganalisis dan mentafsir teks, dipanggil penterjemah.

Walaupun fakta bahawa beribu-ribu bahasa yang berbeza dan penterjemah mereka telah dibangunkan setakat ini, proses mencipta aplikasi baru di kawasan ini tidak berhenti. Ini disebabkan kedua-dua pembangunan teknologi pengeluaran sistem komputer dan keperluan untuk menyelesaikan masalah gunaan yang semakin kompleks. Di samping itu, unsur-unsur teori bahasa dan tatabahasa formal boleh digunakan dalam pelbagai bidang lain, contohnya, apabila menerangkan struktur data, fail, imej, yang dibentangkan bukan dalam teks, tetapi dalam format binari. Kaedah ini juga berguna apabila membangunkan penterjemah anda sendiri, walaupun di mana analog yang sepadan sudah wujud. Perkembangan sedemikian mungkin disebabkan oleh pelbagai sebab, khususnya, batasan fungsi, kekurangan penyetempatan, dan kecekapan rendah. Sebagai contoh, salah satu perkembangan terkini oleh Microsoft ialah bahasa pengaturcaraan C#, dan salah satu sebab penciptaannya adalah keinginan untuk mengurangkan populariti bahasa pengaturcaraan Java. Terdapat banyak contoh lain di mana membangunkan penterjemah anda sendiri mungkin relevan. Oleh itu, asas-asas teori bahasa dan tatabahasa formal, serta kaedah praktikal Perkembangan penterjemah terletak pada asas pendidikan kejuruteraan dalam sains komputer dan sains komputer.

Bahan yang dicadangkan menyentuh asas kaedah untuk membangunkan penterjemah dan mengandungi maklumat yang diperlukan untuk mengkaji logik fungsi mereka dan alat matematik yang digunakan (teori bahasa formal dan tatabahasa formal, bahasa metal). Ia digunakan sebagai sebahagian daripada kursus kuliah sepanjang semester yang diberikan untuk pelbagai kepakaran di Fakulti Informatik dan Sains Komputer Universiti Teknikal Negeri Krasnoyarsk. Semasa kerja makmal, kenalan langsung dengan kaedah individu untuk mencipta penterjemah dijalankan.

Tujuan disiplin: untuk memberikan pengetahuan tentang asas-asas teori bahasa dan tatabahasa formal, teori automata, kaedah membangunkan penterjemah.

Untuk mencapai matlamat ini, tugas-tugas berikut diselesaikan semasa mengajar disiplin:

  1. Kursus kuliah meneliti prinsip umum mengatur proses terjemahan dan struktur penterjemah. Asas teori membina penterjemah dipelajari.
  2. hidup kelas makmal dan semasa kerja bebas penyatuan praktikal pengetahuan teori yang diperolehi dijalankan: penterjemah untuk bahasa pengaturcaraan mudah sedang dibangunkan.

Konsep dan definisi asas

Kebanyakan definisi yang dipertimbangkan dipinjam daripada [ARNFTS Kamus penerangan Inggeris-Rusia-Jerman-Perancis mengenai teknologi komputer dan pemprosesan data, 4132 istilah. Di bawah. ed. A.A. Dorodnitsyna. M.: 1978. 416 hlm.) ].

Penterjemah - program perkhidmatan yang menukar program sumber yang disediakan dalam bahasa pengaturcaraan input kepada program kerja, diwakili dalam bahasa objek.

Takrifan di atas digunakan untuk semua jenis program penyiaran. Namun begitu, setiap program ini mungkin mempunyai ciri tersendiri dalam mengatur proses penyiaran. Pada masa ini, penterjemah dibahagikan kepada tiga kumpulan utama: penghimpun, penyusun dan jurubahasa.

Asembler - program utiliti sistem yang menukar binaan simbolik kepada arahan bahasa mesin. Ciri khusus pemasang ialah mereka melaksanakan terjemahan verbatim satu arahan simbolik ke dalam satu arahan mesin. Oleh itu, bahasa himpunan (juga dipanggil autokod) direka untuk memudahkan persepsi sistem arahan komputer dan mempercepatkan pengaturcaraan dalam sistem arahan ini. Adalah lebih mudah bagi seorang pengaturcara untuk mengingati penunjuk mnemonik arahan mesin daripada kod binari mereka. Oleh itu, keuntungan utama dicapai bukan dengan meningkatkan kuasa arahan individu, tetapi dengan meningkatkan kecekapan persepsi mereka.

Pada masa yang sama, bahasa himpunan, sebagai tambahan kepada analog perintah mesin, mengandungi banyak arahan tambahan yang memudahkan, khususnya, mengurus sumber komputer, menulis serpihan berulang, dan membina program berbilang modul. Oleh itu, ekspresi bahasa adalah lebih kaya daripada sekadar bahasa pengekodan simbolik, yang sangat meningkatkan kecekapan pengaturcaraan.

Penyusun - Ini ialah program perkhidmatan yang menterjemahkan atur cara yang ditulis dalam bahasa komputer ke dalam bahasa mesin. bahasa asal pengaturcaraan. Sama seperti penghimpun, pengkompil menukar atur cara daripada satu bahasa ke bahasa lain (paling kerap, ke dalam bahasa komputer tertentu). Pada masa yang sama, arahan bahasa sumber berbeza dengan ketara dalam organisasi dan kuasa daripada arahan bahasa mesin. Terdapat bahasa di mana satu arahan bahasa sumber diterjemahkan ke dalam 7-10 arahan mesin. Walau bagaimanapun, terdapat juga bahasa di mana setiap arahan boleh mempunyai 100 atau lebih arahan mesin (contohnya, Prolog). Di samping itu, bahasa sumber sering menggunakan penaipan data yang ketat, dilakukan melalui penerangan awal mereka. Pengaturcaraan mungkin tidak bergantung pada pengekodan algoritma, tetapi pada pemikiran dengan teliti tentang struktur data atau kelas. Proses penterjemahan daripada bahasa tersebut biasanya dipanggil kompilasi, dan bahasa sumber biasanya merupakan bahasa pengaturcaraan peringkat tinggi (atau bahasa peringkat tinggi). Abstraksi bahasa pengaturcaraan daripada sistem arahan komputer membawa kepada penciptaan bebas pelbagai jenis bahasa berorientasikan penyelesaian tugasan tertentu. Bahasa telah muncul untuk pengiraan saintifik, pengiraan ekonomi, akses kepada pangkalan data, dan lain-lain.

Jurubahasa - program atau peranti yang menjalankan terjemahan operator demi operator dan pelaksanaan program asal. Tidak seperti pengkompil, penterjemah tidak menghasilkan program bahasa mesin sebagai output. Setelah mengenali arahan dalam bahasa sumber, ia segera melaksanakannya. Kedua-dua penyusun dan jurubahasa menggunakan kaedah yang sama untuk menganalisis kod sumber program. Tetapi jurubahasa membenarkan anda untuk mula memproses data selepas menulis walaupun satu arahan. Ini menjadikan proses pembangunan dan penyahpepijatan program lebih fleksibel. Di samping itu, ketiadaan kod mesin output membolehkan anda mengelakkan kekacauan peranti luaran fail tambahan, dan penterjemah itu sendiri boleh dengan mudah disesuaikan dengan mana-mana seni bina mesin, setelah membangunkannya sekali sahaja dalam bahasa pengaturcaraan yang digunakan secara meluas. Oleh itu, bahasa yang ditafsirkan jenis Java Skrip, Skrip VB, telah tersebar luas. Kelemahan jurubahasa adalah kelajuan rendah pelaksanaan program. Program yang biasanya ditafsirkan dilaksanakan 50-100 kali program yang lebih perlahan ditulis dalam kod mesin.

Emulator - program atau perisian dan alat perkakasan yang menyediakan keupayaan, tanpa pengaturcaraan semula, untuk melaksanakan pada komputer tertentu program yang menggunakan kod atau kaedah melaksanakan operasi yang berbeza daripada komputer yang diberikan. Emulator adalah serupa dengan penterjemah kerana ia melaksanakan secara langsung atur cara yang ditulis dalam bahasa tertentu. Walau bagaimanapun, selalunya ia adalah bahasa mesin atau kod perantaraan. Kedua-duanya mewakili pasukan dalam kod binari, yang boleh dilaksanakan serta-merta selepas pengiktirafan kod operasi. Tidak seperti program teks, tidak perlu mengenali struktur program atau memperuntukkan operan.

Emulator digunakan agak kerap untuk pelbagai tujuan. Contohnya, apabila membangunkan sistem pengkomputeran baharu, emulator pertama kali dicipta yang menjalankan program yang dibangunkan untuk komputer yang belum wujud. Ini membolehkan anda menilai sistem arahan dan membangunkan perisian asas walaupun sebelum perkakasan yang sepadan dicipta.

Selalunya, emulator digunakan untuk menjalankan program lama pada yang baru. komputer. Biasanya, komputer yang lebih baharu adalah lebih pantas dan mempunyai peranti yang lebih baik. Ini membolehkan anda meniru program lama dengan lebih cekap daripada menjalankannya pada komputer lama. Contoh pendekatan ini ialah pembangunan emulator untuk komputer rumah ZX Spectrum dengan mikropemproses Z80. Masih terdapat orang yang suka bermain pada emulator dengan program permainan yang ketinggalan zaman, tetapi masih tidak kehilangan daya tarikan mereka yang dahulu. Emulator juga boleh digunakan sebagai analog sistem komputer moden yang lebih murah, sambil memberikan prestasi yang boleh diterima bersamaan dengan model kelas rendah bagi keluarga seni bina tertentu. Contohnya ialah emulator PC IBM komputer yang serasi, dilaksanakan selama lebih daripada komputer berkuasa syarikat Apple. Sejumlah emulator yang ditulis untuk IBM PC berjaya menggantikan pelbagai konsol permainan.

Emulator perwakilan perantaraan, serta penterjemah, boleh dipindahkan dengan mudah dari satu seni bina komputer ke yang lain, membolehkan penciptaan perisian mudah alih. Sifat inilah yang menentukan kejayaan bahasa pengaturcaraan Java, dari mana program ini diterjemahkan ke dalam kod perantaraan. Melaksanakan kod ini java maya mesin itu tidak lebih daripada emulator yang menjalankan mana-mana sistem pengendalian moden.

Transcoder - program atau peranti perisian yang menterjemah program yang ditulis dalam bahasa mesin satu komputer kepada program dalam bahasa mesin komputer lain. Jika emulator adalah analog penterjemah yang kurang pintar, maka transcoder bertindak dalam kapasiti yang sama berhubung dengan pengkompil. Begitu juga, kod mesin sumber (dan biasanya binari) atau perwakilan perantaraan ditukar kepada kod lain yang serupa dengan satu arahan dan tanpa sebarang analisis umum struktur program sumber. Transkoder berguna apabila memindahkan atur cara dari satu seni bina komputer ke yang lain. Ia juga boleh digunakan untuk membina semula teks program bahasa peringkat tinggi daripada kod binari sedia ada.

Makropemproses - program yang menggantikan satu urutan aksara dengan yang lain[Brown]. Ini adalah jenis penyusun. Ia menjana teks output dengan memproses sisipan khas yang terletak dalam teks sumber. Sisipan ini direka bentuk dengan cara yang istimewa dan tergolong dalam binaan bahasa yang dipanggil makrolanguage. Makropemproses sering digunakan sebagai alat tambah kepada bahasa pengaturcaraan, meningkatkan fungsi sistem pengaturcaraan. Hampir mana-mana pemasang mengandungi makropemproses, yang meningkatkan kecekapan pembangunan program mesin. Sistem pengaturcaraan sedemikian biasanya dipanggil macroassemblers.

Makropemproses juga digunakan dengan bahasa peringkat tinggi. Mereka meningkatkan fungsi bahasa seperti PL/1, C, C++. Pemproses makro digunakan secara meluas terutamanya dalam C dan C++, menjadikannya lebih mudah untuk menulis atur cara. Contoh penggunaan meluas makropemproses ialah perpustakaan kelas Microsoft Foundation Classes (MFC). Ia melaksanakan peta mesej dan objek program lain melalui sisipan makro. Pada masa yang sama, makropemproses meningkatkan kecekapan pengaturcaraan tanpa mengubah sintaks dan semantik bahasa.

Sintaks - satu set peraturan bahasa tertentu yang menentukan pembentukan unsur-unsurnya. Dengan kata lain, ini satu set peraturan untuk pembentukan urutan aksara yang signifikan secara semantik dalam bahasa tertentu. Sintaks ditentukan menggunakan peraturan yang menerangkan konsep bahasa. Contoh konsep ialah: pembolehubah, ungkapan, pengendali, prosedur. Urutan konsep dan penggunaannya yang boleh diterima dalam peraturan menentukan struktur yang betul secara sintaksis yang membentuk atur cara. Ia adalah hierarki objek, dan bukan cara mereka berinteraksi antara satu sama lain, yang ditakrifkan melalui sintaks. Sebagai contoh, pernyataan hanya boleh berlaku dalam prosedur, ungkapan dalam pernyataan, pembolehubah boleh terdiri daripada nama dan indeks pilihan, dsb. Sintaks tidak dikaitkan dengan fenomena sedemikian dalam program sebagai "melompat ke label yang tidak wujud" atau "pembolehubah dengan nama yang diberikan tidak ditakrifkan." Inilah yang dilakukan oleh semantik.

Semantik - peraturan dan syarat yang menentukan hubungan antara unsur bahasa dengan makna semantiknya, serta tafsiran makna makna binaan sintaksis bahasa.. Objek bahasa pengaturcaraan bukan sahaja diletakkan dalam teks mengikut hierarki tertentu, tetapi juga saling berkaitan melalui konsep lain yang membentuk pelbagai persatuan. Sebagai contoh, pembolehubah, yang sintaksnya mentakrifkan lokasi yang sah hanya dalam pengisytiharan dan beberapa pernyataan, mempunyai jenis tertentu, boleh digunakan dengan bilangan operasi yang terhad, mempunyai alamat, saiz, dan mesti diisytiharkan sebelum ia boleh. digunakan dalam program.

Penganalisis sintaksis - komponen pengkompil yang menyemak penyataan sumber untuk pematuhan dengan peraturan sintaksis dan semantik bahasa ini pengaturcaraan. Walaupun namanya, penganalisis menyemak kedua-dua sintaks dan semantik. Ia terdiri daripada beberapa blok, setiap satunya menyelesaikan masalahnya sendiri. Ia akan dibincangkan dengan lebih terperinci apabila menerangkan struktur penterjemah.

Ciri umum bahasa pengaturcaraan dan penterjemah

Bahasa pengaturcaraan agak berbeza antara satu sama lain dalam tujuan, struktur, kerumitan semantik, dan kaedah pelaksanaan. Ini mengenakan ciri khususnya sendiri pada pembangunan penterjemah tertentu.

Bahasa pengaturcaraan adalah alat untuk menyelesaikan masalah dalam bidang subjek yang berbeza, yang menentukan spesifik organisasi mereka dan perbezaan tujuan. Contohnya termasuk bahasa seperti Fortran, yang berorientasikan kepada pengiraan saintifik, C, yang bertujuan untuk pengaturcaraan sistem, Prolog, yang menerangkan masalah inferens dengan berkesan, dan Lisp, yang digunakan untuk pemprosesan senarai rekursif. Contoh-contoh ini boleh diteruskan. Setiap bidang subjek meletakkan keperluannya sendiri pada organisasi bahasa itu sendiri. Oleh itu, kita boleh perhatikan pelbagai bentuk perwakilan operator dan ungkapan, perbezaan dalam set operasi asas, penurunan kecekapan pengaturcaraan apabila menyelesaikan masalah yang tidak berkaitan dengan bidang subjek. Perbezaan linguistik juga tercermin dalam struktur penterjemah. Lisp dan Prolog paling kerap dilaksanakan dalam mod tafsiran kerana fakta bahawa ia menggunakan penjanaan dinamik jenis data semasa pengiraan. Penterjemah Fortran dicirikan oleh pengoptimuman agresif kod mesin yang terhasil, yang menjadi mungkin disebabkan oleh semantik binaan bahasa yang agak mudah - khususnya, kerana ketiadaan mekanisme untuk penamaan alternatif pembolehubah melalui penunjuk atau rujukan. Kehadiran penunjuk dalam bahasa C membentangkan keperluan khusus kepada peruntukan memori dinamik.

Struktur bahasa mencirikan hubungan hierarki antara konsepnya, yang digambarkan oleh peraturan sintaksis. Bahasa pengaturcaraan boleh sangat berbeza antara satu sama lain dalam organisasi konsep individu dan hubungan antara mereka. Bahasa pengaturcaraan PL/1 membenarkan prosedur dan fungsi sarang sewenang-wenangnya, manakala dalam C semua fungsi mesti berada pada tahap sarang luar. Bahasa C++ membenarkan pembolehubah diisytiharkan pada mana-mana titik dalam program sebelum penggunaan pertamanya, manakala dalam pembolehubah Pascal mesti ditakrifkan dalam kawasan pengisytiharan khas. Mengambil ini lebih jauh ialah PL/1, yang membenarkan pembolehubah diisytiharkan selepas ia digunakan. Atau anda boleh meninggalkan penerangan sama sekali dan menggunakan peraturan lalai. Bergantung kepada keputusan yang diambil, penterjemah boleh menganalisis atur cara dalam satu atau lebih pas, yang mempengaruhi kelajuan terjemahan.

Semantik bahasa pengaturcaraan berbeza secara meluas. Mereka berbeza bukan sahaja dalam ciri pelaksanaan operasi individu, tetapi juga dalam paradigma pengaturcaraan, yang menentukan perbezaan asas dalam kaedah pembangunan program. Spesifik pelaksanaan operasi mungkin melibatkan kedua-dua struktur data yang sedang diproses dan peraturan untuk memproses jenis data yang sama. Bahasa seperti PL/1 dan APL menyokong operasi matriks dan vektor. Kebanyakan bahasa berfungsi terutamanya dengan skalar, menyediakan prosedur dan fungsi yang ditulis oleh pengaturcara untuk memproses tatasusunan. Tetapi walaupun semasa menjalankan operasi menambah dua integer, bahasa seperti C dan Pascal boleh berkelakuan berbeza.

Bersama-sama dengan pengaturcaraan prosedur tradisional, juga dipanggil imperatif, terdapat paradigma seperti pengaturcaraan berfungsi, pengaturcaraan logik dan pengaturcaraan berorientasikan objek. Saya berharap paradigma pengaturcaraan prosedur-parametrik yang saya cadangkan akan mengambil tempatnya dalam siri ini [Legalov2000]. Struktur konsep dan objek bahasa sangat bergantung pada paradigma yang dipilih, yang juga mempengaruhi pelaksanaan penterjemah.

Malah bahasa yang sama boleh dilaksanakan dalam beberapa cara. Ini disebabkan oleh fakta bahawa teori tatabahasa formal membenarkan kaedah yang berbeza untuk menghuraikan ayat yang sama. Selaras dengan ini, penterjemah boleh memperoleh hasil yang sama dengan cara yang berbeza ( program objek) berdasarkan teks sumber asal.

Pada masa yang sama, semua bahasa pengaturcaraan mempunyai beberapa ciri dan parameter yang sama. Kesamaan ini juga menentukan prinsip penyusunan penterjemah yang serupa untuk semua bahasa.

  1. Bahasa pengaturcaraan direka untuk memudahkan pengaturcaraan. Oleh itu, pengendali dan struktur data mereka lebih berkuasa daripada dalam bahasa mesin.
  2. Untuk meningkatkan kejelasan program, bukannya kod angka, simbolik atau perwakilan grafik struktur bahasa yang lebih sesuai untuk persepsi manusia.
  3. Untuk mana-mana bahasa ia ditakrifkan:
  • Banyak simbol yang boleh digunakan untuk menulis program yang betul (abjad), elemen asas.
  • Banyak program yang betul (sintaks).
  • "Maksud" setiap program yang betul (semantik).

Tanpa mengira spesifik bahasa, mana-mana penterjemah boleh dianggap sebagai penukar berfungsi F, menyediakan pemetaan unik dari X ke Y, di mana X ialah atur cara dalam bahasa sumber, Y ialah atur cara dalam bahasa output. Oleh itu, proses terjemahan itu sendiri boleh dibentangkan secara formal dengan ringkas dan jelas:

Secara rasmi, setiap atur cara X yang betul ialah rangkaian simbol daripada beberapa abjad A, diubah menjadi rantaian Y yang sepadan, terdiri daripada simbol abjad B.

Bahasa pengaturcaraan, seperti mana-mana sistem yang kompleks, ditakrifkan melalui hierarki konsep yang mentakrifkan hubungan antara unsur-unsurnya. Konsep-konsep ini saling berkaitan mengikut peraturan sintaksis. Setiap program yang dibina mengikut peraturan ini mempunyai struktur hierarki yang sepadan.

Dalam hal ini, untuk semua bahasa dan program mereka, perkara berikut boleh dibezakan secara tambahan: ciri-ciri biasa: Setiap bahasa mesti mengandungi peraturan untuk menjana atur cara yang mematuhi bahasa tersebut atau untuk mengenali kesesuaian antara atur cara bertulis dan bahasa tertentu.

Hubungan antara struktur atur cara dan bahasa pengaturcaraan dipanggil pemetaan sintaksis.

Sebagai contoh, pertimbangkan hubungan antara struktur hierarki dan rentetan simbol yang mentakrifkan ungkapan aritmetik berikut:

Dalam kebanyakan bahasa pengaturcaraan, ungkapan ini mentakrifkan hierarki objek program, yang boleh dipaparkan sebagai pokok (Rajah 1.1.):

Bulatan mewakili simbol yang digunakan sebagai struktur asas, dan segi empat tepat mewakili konsep komposit yang mempunyai struktur hierarki dan mungkin rekursif. Hierarki ini ditakrifkan menggunakan peraturan sintaksis yang ditulis dalam bahasa khas yang dipanggil metalanguage (metalanguage akan dibincangkan dengan lebih terperinci semasa mempelajari tatabahasa formal):

<выражение> ::= <слагаемое> | <выражение> + <слагаемое>

<слагаемое> ::= <множитель> | <слагаемое> * <множитель>

<множитель> ::= <буква> | (<выражение>)

<буква>

Catatan. Tanda "::=" dibaca sebagai "ini". Paip "|" berbunyi seperti "atau".

Jika peraturan ditulis secara berbeza, struktur hierarki akan berubah. Contohnya ialah kaedah berikut entri peraturan:

<выражение> ::= <операнд> | <выражение> + < операнд > | <выражение> * < операнд >

<операнд> ::= <буква> | (<выражение>)

<буква>::= a | b | c | d | i | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z

Hasil daripada penghuraian sintaksis bagi ungkapan aritmetik yang sama, struktur hierarki akan dibina, ditunjukkan dalam Rajah. 1.2.


Perlu diingatkan bahawa struktur hierarki dalam kes umum mungkin sama sekali tidak berkaitan dengan semantik ungkapan. Dalam kedua-dua kes, keutamaan operasi boleh dilaksanakan mengikut peraturan yang diterima umum, apabila pendaraban mendahului penambahan (atau sebaliknya, semua operasi boleh mempunyai keutamaan yang sama di bawah mana-mana set peraturan). Walau bagaimanapun, struktur pertama jelas menyokong pelaksanaan selanjutnya keutamaan yang diterima umum, manakala yang kedua lebih sesuai untuk melaksanakan operasi dengan keutamaan yang sama dan melaksanakannya dari kanan ke kiri.

Proses mencari struktur sintaksis program yang diberikan dipanggil menghurai.

Struktur sintaksis yang betul dalam satu bahasa mungkin tidak betul dalam bahasa lain. Sebagai contoh, dalam bahasa Forth ungkapan yang diberikan tidak akan dikenali. Walau bagaimanapun, untuk bahasa ini ungkapan postfix yang betul ialah:

Struktur sintaksisnya diterangkan oleh peraturan:

<выражение> ::= <буква> | <операнд> <операнд> <операция>

< операнд > ::= < буква > | < выражение >

< операция > ::= + | *

<буква>::= a | b | c | d | i | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z

Pokok hierarki yang mentakrifkan struktur sintaksis dibentangkan dalam Rajah. 1.3.

Satu lagi ciri ciri semua bahasa ialah semantik mereka. Ia menentukan maksud operasi bahasa dan ketepatan operan. Rantaian yang mempunyai struktur sintaksis yang sama dalam bahasa pengaturcaraan yang berbeza mungkin berbeza dalam semantik (yang, sebagai contoh, diperhatikan dalam C++, Pascal, Asas untuk serpihan ungkapan aritmetik di atas).

Pengetahuan tentang semantik bahasa membolehkan anda memisahkannya daripada sintaksnya dan menggunakannya untuk penukaran kepada bahasa lain (untuk menjana kod).

Perihalan semantik dan pengiktirafan ketepatannya biasanya merupakan bahagian penterjemah yang paling intensif buruh dan besar, kerana ia perlu untuk menghitung dan menganalisis banyak pilihan untuk gabungan operasi dan operan yang sah.

Struktur penterjemah umum

Sifat dan corak biasa wujud dalam kedua-dua bahasa pengaturcaraan yang berbeza dan penterjemah daripada bahasa ini. Mereka menjalani proses serupa untuk menukar teks sumber. Walaupun pada hakikatnya interaksi proses ini boleh diatur dengan cara yang berbeza, adalah mungkin untuk mengenal pasti fungsi yang pelaksanaannya membawa kepada hasil yang sama. Mari kita panggil fungsi tersebut sebagai fasa proses terjemahan.

Memandangkan persamaan antara pengkompil dan jurubahasa, mari kita lihat fasa-fasa yang wujud dalam pengkompil. Ia menyerlahkan:

  1. Fasa analisis leksikal.
  2. Fasa penghuraian yang terdiri daripada:
  • pengecaman struktur sintaksis;
  • penghuraian semantik, semasa kerja dengan jadual dijalankan, menghasilkan perwakilan semantik perantaraan atau model objek bahasa.
  • Fasa penjanaan kod, yang:
    • analisis semantik komponen perwakilan perantaraan atau model objek bahasa;
    • menterjemah perwakilan perantaraan atau model objek kepada kod objek.

    Bersama-sama dengan fasa utama proses terjemahan, fasa tambahan juga mungkin:

      2a. Fasa penerokaan perwakilan pertengahan dan pengoptimuman, yang terdiri daripada:
    2a.1. menganalisis ketepatan perwakilan pertengahan;
    2a.2. pengoptimuman perwakilan perantaraan.
      3a. Fasa pengoptimuman kod objek.

    Jurubahasa berbeza kerana fasa penjanaan kod biasanya digantikan dengan fasa meniru unsur perwakilan perantaraan atau model objek bahasa. Di samping itu, jurubahasa biasanya tidak mengoptimumkan perwakilan perantaraan, tetapi segera menirunya.

    Di samping itu, adalah mungkin untuk membezakan proses analisis dan pembetulan ralat yang wujud dalam teks sumber yang diproses program yang seragam untuk semua fasa.

    Struktur umum pengkompil, dengan mengambil kira fasa yang ada di dalamnya, dibentangkan dalam Rajah. 1.4.

    Ia terdiri daripada penganalisis leksikal, penghurai, penjana kod dan penganalisis ralat. Daripada penjana kod, penterjemah menggunakan emulator (Rajah 1.5), di mana, sebagai tambahan kepada elemen perwakilan perantaraan, data sumber dipindahkan. Output emulator adalah hasil pengiraan.

    Penganalisis leksikal (juga dikenali sebagai pengimbas) membaca rentetan input aksara dan mengumpulkannya ke dalam struktur asas yang dipanggil leksem. Setiap token mempunyai kelas dan makna. Biasanya, calon untuk peranan leksem adalah konstruk bahasa asas, contohnya, pengecam, nombor nyata, ulasan. Token yang terhasil dihantar ke parser. Pengimbas bukan bahagian wajib penterjemah. Walau bagaimanapun, ia membolehkan anda meningkatkan kecekapan proses terjemahan. Analisis leksikal dibincangkan dengan lebih terperinci dalam topik: "Organisasi analisis leksikal."

    Penghurai menghuraikan atur cara sumber menggunakan leksem masuk, membina struktur sintaksis program dan analisis semantik dengan pembentukan model objek bahasa. Model objek mewakili struktur sintaksis, dilengkapi dengan hubungan semantik antara konsep sedia ada. Sambungan ini boleh menjadi:

    • rujukan kepada pembolehubah, jenis data dan nama prosedur yang diletakkan dalam jadual nama;
    • sambungan yang menentukan urutan pelaksanaan arahan;
    • sambungan yang menentukan sarang unsur model objek bahasa dan lain-lain.

    Oleh itu, parser adalah blok penterjemah yang agak kompleks. Oleh itu, ia boleh dibahagikan kepada komponen berikut:

    • pengecam;
    • blok analisis semantik;
    • model objek, atau perwakilan perantaraan, yang terdiri daripada jadual nama dan struktur sintaksis.

    Struktur umum penghurai ditunjukkan dalam Rajah. 1.6.

    Pengecam menerima rangkaian leksem dan, berdasarkannya, melakukan penghuraian mengikut peraturan yang digunakan. Token, apabila berjaya menghurai peraturan, dipindahkan ke penganalisis semantik, yang membina jadual nama dan merekodkan serpihan struktur sintaksis. Selain itu, sambungan semantik tambahan direkodkan antara jadual nama dan struktur sintaksis. Akibatnya, model objek program terbentuk, dibebaskan daripada mengikat kepada sintaks bahasa pengaturcaraan. Selalunya, bukannya struktur sintaksis yang menyalin sepenuhnya hierarki objek bahasa, analog yang dipermudahkan dicipta, yang dipanggil perwakilan perantaraan.

    Penganalisis ralat menerima maklumat tentang ralat yang berlaku dalam blok yang berbeza penterjemah. Menggunakan maklumat yang diterima, ia menjana mesej kepada pengguna. Di samping itu, blok ini boleh cuba membetulkan ralat untuk meneruskan penghuraian selanjutnya. Dia juga bertanggungjawab terhadap tindakan yang berkaitan dengan penyiapan program yang betul sekiranya tidak dapat meneruskan siaran.

    Penjana kod membina kod mesin objek berdasarkan analisis model objek atau perwakilan perantaraan. Pembinaan kod itu disertakan dengan analisis semantik tambahan yang berkaitan dengan keperluan untuk menukar arahan umum kepada kod komputer tertentu. Pada peringkat analisis sedemikian, kemungkinan transformasi akhirnya ditentukan, dan pilihan yang berkesan. Penjanaan kod itu sendiri ialah pengekodan semula satu arahan ke yang lain.

    Pilihan untuk interaksi blok penterjemah

    Organisasi proses terjemahan, yang menentukan pelaksanaan fasa utama, boleh dijalankan dalam pelbagai cara. Ini ditentukan oleh pelbagai pilihan untuk interaksi blok penterjemah: penganalisis leksikal, penghurai dan penjana kod. Walaupun keputusan akhir yang sama, pelbagai pilihan interaksi blok penterjemah menyediakan pelbagai pilihan untuk menyimpan data perantaraan. Terdapat dua pilihan utama untuk interaksi blok penterjemah:

    • organisasi berbilang pas, di mana setiap fasa adalah proses bebas yang memindahkan kawalan ke fasa seterusnya hanya selepas pemprosesan lengkap datanya;
    • organisasi laluan tunggal, di mana semua fasa mewakili satu proses dan menghantar data antara satu sama lain dalam serpihan kecil.

    Berdasarkan dua pilihan utama, anda juga boleh membuat pelbagai kombinasi daripadanya.

    Organisasi interaksi berbilang pas antara blok penterjemah

    Versi interaksi blok ini, menggunakan pengkompil sebagai contoh, dibentangkan dalam Rajah 1.7.


    Penganalisis leksikal memproses sepenuhnya teks sumber, membentuk rantaian keluaran yang terdiri daripada semua leksem yang diterima. Hanya selepas ini kawalan dipindahkan ke parser. Penghurai menerima rantaian leksem yang dijana dan, berdasarkannya, membentuk perwakilan perantaraan atau model objek. Selepas menerima keseluruhan model objek, ia memberikan kawalan kepada penjana kod. Penjana kod, berdasarkan model objek bahasa, membina kod mesin yang diperlukan

    Kelebihan pendekatan ini termasuk:

    1. Pengasingan fasa individu, yang membolehkan pelaksanaan dan penggunaan bebas mereka.
    2. Keupayaan untuk menyimpan data yang diperoleh hasil daripada operasi setiap fasa pada peranti storan luaran dan menggunakannya mengikut keperluan.
    3. Keupayaan untuk mengurangkan jumlah RAM yang diperlukan untuk mengendalikan penterjemah dengan memanggil fasa secara berurutan.

    Kelemahannya termasuk:

    1. Ketersediaan jumlah yang besar maklumat perantaraan, yang mana hanya sebahagian kecil diperlukan pada masa tertentu.
    2. Kelajuan siaran yang perlahan disebabkan oleh pelaksanaan fasa yang berurutan dan penggunaan peranti storan luaran untuk menjimatkan RAM.

    Pendekatan ini mungkin mudah apabila membina penterjemah daripada bahasa pengaturcaraan dengan struktur sintaksis dan semantik yang kompleks (contohnya, PL/I). Dalam situasi sedemikian, terjemahan sukar dicapai dalam satu pas, jadi lebih mudah untuk mewakili keputusan pas sebelumnya sebagai data perantaraan tambahan. Perlu diingatkan bahawa struktur semantik dan sintaksis bahasa yang kompleks boleh menyebabkan laluan tambahan yang diperlukan untuk mewujudkan kebergantungan yang diperlukan. Jumlah pas mungkin lebih daripada sepuluh. Bilangan pas juga boleh dipengaruhi oleh penggunaan ciri bahasa tertentu oleh program, seperti mengisytiharkan pembolehubah dan prosedur selepas ia digunakan, menggunakan peraturan pengisytiharan lalai dan sebagainya.

    Organisasi satu laluan interaksi antara blok penterjemah

    Salah satu pilihan untuk interaksi blok pengkompil dengan organisasi laluan tunggal dibentangkan dalam Rajah. 1.8.

    Dalam kes ini, proses terjemahan berjalan seperti berikut. Penganalisis leksikal membaca serpihan teks sumber yang diperlukan untuk mendapatkan satu leksem. Selepas token dibentuk, ia memanggil parser dan memberikannya token yang dicipta sebagai parameter. Jika penghurai boleh membina elemen seterusnya bagi perwakilan perantaraan, maka ia berbuat demikian dan menghantar serpihan yang dibina kepada penjana kod. Jika tidak, penghurai mengembalikan kawalan kepada pengimbas, dengan itu menjelaskan bahawa token seterusnya telah diproses dan data baharu diperlukan.

    Penjana kod berfungsi dengan cara yang sama. Berdasarkan serpihan perwakilan perantaraan yang diterima, ia mencipta serpihan kod objek yang sepadan. Selepas ini, kawalan kembali ke penghurai.

    Setelah selesai teks sumber dan selesai pemprosesan semua data perantaraan oleh setiap blok, penganalisis leksikal memulakan proses penamatan program.

    Selalunya, penterjemah laluan tunggal menggunakan skema kawalan yang berbeza, di mana penghurai memainkan peranan blok utama (Rajah 1.9).

    Penganalisis leksikal dan penjana kod bertindak sebagai subrutin yang dipanggilnya. Sebaik sahaja penghurai memerlukan token lain, ia memanggil pengimbas. Apabila menerima serpihan perwakilan perantaraan, panggilan dibuat kepada penjana kod. Penyelesaian proses terjemahan berlaku selepas token terakhir diterima dan diproses dan dimulakan oleh penghurai.

    Kelebihan skim satu laluan termasuk ketiadaan volum besar data perantaraan, kelajuan tinggi pemprosesan disebabkan gabungan fasa dalam satu proses dan ketiadaan akses kepada peranti storan luaran.

    Kelemahan termasuk: kemustahilan melaksanakan skema terjemahan sedemikian untuk bahasa dengan struktur kompleks dan kekurangan data perantaraan yang boleh digunakan untuk analisis dan pengoptimuman yang kompleks.

    Skim ini sering digunakan untuk bahasa pengaturcaraan yang mudah dalam struktur semantik dan sintaksis, baik dalam penyusun dan jurubahasa. Contoh bahasa tersebut ialah Asas dan Pascal. Jurubahasa klasik biasanya dibina menggunakan skema satu laluan, kerana pelaksanaan langsung dijalankan pada tahap serpihan individu perwakilan perantaraan. Organisasi interaksi antara blok penterjemah sedemikian ditunjukkan dalam Rajah. 1.10.

    Interaksi gabungan blok penterjemah

    Gabungan skim terjemahan berbilang laluan dan satu laluan menimbulkan pelbagai pilihan gabungan, kebanyakannya berjaya digunakan. Sebagai contoh, kita boleh mempertimbangkan sebahagian daripada mereka.

    Dalam Rajah. Rajah 1.11 menunjukkan gambar rajah interaksi blok penterjemah, membahagikan keseluruhan proses kepada dua laluan. Pas pertama menjana perwakilan perantaraan lengkap program, dan yang kedua menjana kod. Menggunakan skema sedemikian membolehkan anda dengan mudah memindahkan penterjemah dari satu sistem komputer ke yang lain dengan menulis semula penjana kod.

    Di samping itu, bukannya penjana kod, mudah untuk menyambungkan emulator perwakilan perantaraan, yang cukup mudah membolehkan anda membangunkan sistem pengaturcaraan dalam bahasa tertentu, berorientasikan kepada pelbagai persekitaran pelaksanaan. Contoh organisasi interaksi antara blok penterjemah ditunjukkan dalam Rajah. 1.12.


    Bersama-sama dengan skim yang melibatkan penggantian penjana kod dengan emulator, terdapat penterjemah yang membenarkan penggunaan bersama mereka. Salah satu daripada skema tersebut ditunjukkan dalam Rajah. 1.13.

    Proses penterjemahan, termasuk penjanaan kod, boleh diselesaikan dalam sebarang bilangan pas (contohnya menggunakan terjemahan laluan tunggal yang dibentangkan sebelum ini). Walau bagaimanapun, kod objek yang dijana tidak dilaksanakan pada sistem komputer yang sepadan, tetapi dicontohi pada komputer dengan seni bina yang berbeza. Skim ini digunakan dalam persekitaran yang dibina di sekeliling bahasa pengaturcaraan Java. Penterjemah itu sendiri menjana kod mesin maya Java, yang dicontohi dengan cara khas kendiri dan dalam persekitaran pelayar Internet.

    Skim yang dibentangkan juga boleh mempunyai tafsiran yang lebih luas berhubung dengan mana-mana pengkompil yang menjana kod mesin. Masalahnya ialah kebanyakan komputer moden dilaksanakan menggunakan kawalan mikroprogram. Peranti kawalan program mikro boleh dianggap sebagai program yang meniru kod mesin. Ini membolehkan kita bercakap tentang penggunaan meluas skim terkini yang dibentangkan.

    Soalan ujian dan tugasan

    1. Namakan perbezaan:
      • jurubahasa daripada penyusun;
      • pengkompil daripada penghimpun;
      • transkoder penterjemah;
      • emulator daripada penterjemah;
      • sintaks daripada semantik.
    1. Beritahu kami tentang perkembangan terkini dalam bahasa pengaturcaraan yang anda ketahui. Berikan ciri-ciri utama bahasa-bahasa tersebut.
    2. bawa contoh khusus penggunaan kaedah terjemahan dalam bidang yang tidak berkaitan dengan bahasa pengaturcaraan.
    3. Berikan contoh khusus bahasa pengaturcaraan yang disusun.
    4. Berikan contoh khusus bahasa pengaturcaraan yang ditafsirkan.
    5. Berikan contoh khusus bahasa pengaturcaraan di mana kedua-dua penyusun dan jurubahasa tersedia.
    6. Kelebihan dan kekurangan utama penyusun.
    7. Kelebihan dan kekurangan utama jurubahasa.
    8. Terangkan perbezaan utama dalam sintaks dua bahasa pengaturcaraan yang anda tahu.
    9. Terangkan perbezaan utama dalam semantik dua bahasa pengaturcaraan yang anda tahu.
    10. Namakan fasa utama proses terjemahan dan tujuannya.
    11. Namakan ciri khusus terjemahan satu laluan.
    12. Namakan ciri khusus terjemahan berbilang laluan.
    13. Berikan contoh kemungkinan gabungan terjemahan satu laluan dan berbilang laluan. Beritahu kami tentang kegunaan praktikal skim-skim ini.