Jumat, 28 Oktober 2011

COMPILER

Sebuah kompiler adalah sebuah program komputer (atau set program) yang mengubah kode sumber yang ditulis dalam bahasa pemrograman (bahasa sumber) ke lain bahasa komputer (bahasa target, sering kali memiliki bentuk biner yang dikenal sebagai kode objek ). Alasan paling umum untuk ingin untuk mengubah kode sumber adalah untuk menciptakan sebuah executable program.
Nama "compiler" yang terutama digunakan untuk program yang menerjemahkan kode sumber dari bahasa pemrograman tingkat tinggi ke bahasa tingkat rendah (misalnya, bahasa assembly atau kode mesin ). Jika program disusun dapat dijalankan pada komputer yang CPU atau sistem operasi ini berbeda dari satu di compiler yang berjalan, compiler dikenal sebagai cross compiler- . Sebuah program yang menerjemahkan dari bahasa tingkat rendah ke tingkat yang lebih tinggi satu adalah decompiler . Sebuah program yang menerjemahkan antara bahasa tingkat tinggi biasanya disebut penerjemah bahasa , penerjemah sumber ke sumber, atau converter bahasa. Sebuah bahasa Rewriter biasanya sebuah program yang menerjemahkan bentuk ekspresi tanpa perubahan bahasa.
Sebuah kompiler kemungkinan untuk melakukan banyak atau semua operasi berikut: analisis leksikal , preprocessing , parsing , analisis semantik ( Sintaks-diarahkan terjemahan ), generasi kode , dan kode optimasi .
Program kesalahan disebabkan oleh perilaku compiler yang salah bisa sangat sulit untuk melacak dan bekerja di sekitar, sehingga pelaksana kompilator menginvestasikan banyak waktu memastikan kebenaran perangkat lunak mereka .
Istilah kompiler-kompiler kadang-kadang digunakan untuk merujuk kepada parser generator , alat sering digunakan untuk membantu menciptakan lexer dan parser .

Isi

 [hide

[ sunting ] Sejarah

Perangkat lunak untuk komputer awal terutama ditulis dalam bahasa assembly selama bertahun-tahun. Pemrograman bahasa tingkat tinggi tidak ditemukan sampai manfaat yang dapat menggunakan kembali perangkat lunak pada berbagai jenis CPU mulai menjadi signifikan lebih besar daripada biaya penulisan kompilator. Sangat terbatas memori kapasitas awal komputer juga menciptakan banyak masalah teknis ketika mengimplementasikan kompilator.
Menjelang akhir 1950-an, mesin-independen bahasa pemrograman yang pertama kali diajukan. Selanjutnya, beberapa kompiler eksperimental dikembangkan. Compiler pertama ditulis oleh Grace Hopper , pada tahun 1952, untuk bahasa pemrograman A-0 . Para FORTRAN tim yang dipimpin oleh John Backus di IBM biasanya dikreditkan memiliki memperkenalkan compiler lengkap pertama di tahun 1957. COBOL adalah bahasa awal yang harus dikompilasi pada beberapa arsitektur, pada tahun 1960. [1]
Dalam domain aplikasi banyak ide untuk menggunakan bahasa tingkat tinggi dengan cepat tertangkap. Karena fungsi memperluas didukung oleh lebih baru bahasa pemrograman dan meningkatnya kompleksitas arsitektur komputer, compiler telah menjadi lebih dan lebih kompleks.
Kompiler awal ditulis dalam bahasa assembly. Yang pertama hosting diri compiler - mampu kompilasi sumber sendiri kode dalam bahasa tingkat tinggi - diciptakan untuk Lisp oleh Tim Hart dan Mike Levin di MIT pada tahun 1962. [2] Sejak 1970-an itu telah menjadi praktek umum untuk menerapkan compiler dalam bahasa itu mengkompilasi, meskipun keduanya Pascal dan C telah pilihan populer untuk bahasa implementasi. Membangun kompiler diri hosting adalah bootstrap masalah compiler seperti pertama untuk bahasa harus dikompilasi baik oleh compiler ditulis dalam bahasa yang berbeda, atau (seperti dalam Hart dan Levin Lisp kompiler) dikompilasi dengan menjalankan compiler dalam interpreter .

[ sunting ] Compiler dalam pendidikan

Compiler konstruksi dan optimasi compiler diajarkan di universitas dan sekolah sebagai bagian dari ilmu komputer kurikulum. Program semacam ini biasanya dilengkapi dengan pelaksanaan sebuah compiler untuk bahasa pemrograman pendidikan . Sebuah contoh yang terdokumentasi dengan baik adalah Niklaus Wirth 's PL / 0 compiler, yang Wirth digunakan untuk mengajar konstruksi compiler pada tahun 1970. [3] Terlepas dari kesederhanaan, kompilator PL / 0 memperkenalkan konsep berpengaruh beberapa bidang:
  1. Program pengembangan oleh penyempurnaan bertahap (juga judul sebuah kertas 1971 oleh Wirth) [4]
  2. Penggunaan parser keturunan rekursif
  3. Penggunaan EBNF untuk menentukan sintaks bahasa
  4. Sebuah code generator portabel memproduksi P-kode
  5. Penggunaan T-diagram [5] dalam deskripsi formal dari bootstrap masalah

[ sunting ] Kompilasi

Compiler memungkinkan pengembangan program-program yang mesin-independen. Sebelum pengembangan Formula Translator (FORTRAN), bahasa tingkat tinggi pertama, pada 1950-an, mesin tergantung bahasa assembly secara luas digunakan. Sementara bahasa assembly menghasilkan program yang lebih dapat digunakan kembali dan relocatable dari kode mesin pada arsitektur yang sama, itu harus diubah atau ditulis ulang jika program ini akan dieksekusi pada arsitektur hardware yang berbeda.
Dengan kemajuan tingkat tinggi bahasa pemrograman segera diikuti setelah FORTRAN, seperti COBOL, C, BASIC, programmer dapat menulis program mesin-independen sumber. Sebuah kompiler menerjemahkan tingkat tinggi program sumber ke dalam program target dalam bahasa mesin untuk hardware tertentu. Setelah target program dihasilkan, pengguna dapat mengeksekusi program.

[ sunting ] Struktur kompilator

Compiler source program jembatan di bahasa tingkat tinggi dengan perangkat keras yang mendasarinya. Sebuah kompiler membutuhkan 1) menentukan kebenaran sintaks program, 2) menghasilkan kode objek yang benar dan efisien, 3) run-time organisasi, dan 4) format output yang sesuai dengan konvensi assembler dan / atau linker. Sebuah kompiler terdiri dari tiga bagian utama: frontend, tengah-akhir, dan backend.
Ujung depan memeriksa apakah program ini benar ditulis dalam hal sintaks dan semantik bahasa pemrograman. Program di sini legal dan ilegal diakui. Kesalahan dilaporkan, jika ada, dalam cara yang bermanfaat. Jenis pemeriksaan juga dilakukan dengan mengumpulkan informasi jenis. Frontend kemudian menghasilkan representasi intermediate atau IR kode sumber untuk diproses oleh akhir menengah.
Ujung tengah di mana optimasi berlangsung. Transformasi khas untuk optimasi penghapusan kode tidak berguna atau tidak terjangkau, penemuan dan propagasi dari nilai-nilai konstan, perhitungan relokasi ke tempat yang kurang sering dieksekusi (misalnya, keluar dari loop), atau spesialisasi perhitungan berdasarkan konteks. Tengah-end lain menghasilkan IR untuk backend berikut. Upaya optimasi Kebanyakan berfokus pada bagian ini.
Bagian belakang bertanggung jawab untuk menerjemahkan IR dari ujung tengah-ke dalam kode perakitan. Instruksi sasaran (s) yang dipilih untuk setiap instruksi IR. Daftar Alokasi memberikan prosesor register untuk variabel program di mana mungkin. Backend menggunakan hardware dengan mencari tahu cara untuk menjaga paralel unit eksekusi sibuk, mengisi slot penundaan , dan sebagainya. Meskipun sebagian besar algoritma untuk optimasi di NP , teknik heuristik telah berkembang dengan baik.

[ sunting ] Compiler keluaran

Salah satu klasifikasi kompiler adalah dengan platform yang yang dihasilkan kode mereka dijalankan. Ini dikenal sebagai platform target.
Sebuah compiler asli atau host adalah salah satu yang output dimaksudkan untuk langsung menjalankan pada jenis yang sama dari sistem komputer dan operasi yang compiler itu sendiri berjalan pada. Output dari cross compiler dirancang untuk dijalankan pada platform yang berbeda. Cross compiler sering digunakan ketika mengembangkan perangkat lunak untuk sistem embedded yang tidak dimaksudkan untuk mendukung lingkungan pengembangan perangkat lunak.
Output dari compiler yang menghasilkan kode untuk sebuah mesin virtual (VM) dapat atau tidak dapat dijalankan pada platform yang sama sebagai compiler yang dihasilkan itu. Untuk alasan ini compiler seperti itu tidak biasanya diklasifikasikan sebagai compiler asli atau silang.
Bahasa tingkat yang lebih rendah yang target compiler mungkin sendiri menjadi bahasa pemrograman tingkat tinggi . C , seringkali dipandang sebagai semacam assembler portabel, juga bisa menjadi bahasa target kompilator. Misalnya: Cfront , compiler asli untuk C + + menggunakan C sebagai bahasa target.

[ sunting ] bahasa Disusun dibandingkan ditafsirkan

Tingkat tinggi bahasa pemrograman umumnya dibagi untuk kenyamanan dalam bahasa dikompilasi dan bahasa ditafsirkan . Namun, dalam praktiknya jarang ada apa-apa tentang bahasa yang membutuhkan untuk secara eksklusif dikompilasi atau ditafsirkan secara eksklusif, meskipun ada kemungkinan untuk merancang bahasa yang mengandalkan re-interpretasi pada waktu berjalan. Kategorisasi biasanya mencerminkan implementasi yang paling populer atau luas dari suatu bahasa - misalnya, BASIC adalah kadang-kadang disebut bahasa ditafsirkan, dan C yang dikompilasi, meskipun keberadaan kompiler dan interpreter BASIC C.
Tren modern menuju just-in-time kompilasi dan interpretasi bytecode pada waktu mengaburkan kategorisasi tradisional kompiler dan interpreter.
Interpretasi tidak dapat sepenuhnya menggantikan kompilasi dan perakitan : meskipun seorang juru bahasa sendiri bisa ditafsirkan, program langsung dieksekusi diperlukan suatu tempat di bagian bawah tumpukan.
Beberapa spesifikasi bahasa menguraikan bahwa implementasi harus mencakup fasilitas kompilasi, misalnya, Common Lisp . Namun, tidak ada yang melekat dalam definisi Common Lisp yang berhenti dari yang ditafsirkan. Bahasa lainnya memiliki fitur yang sangat mudah untuk mengimplementasikan dalam penerjemah, namun membuat tulisan kompilator jauh lebih sulit, misalnya, APL , SNOBOL4 , dan bahasa scripting banyak memungkinkan program untuk membangun source code yang sewenang-wenang pada saat runtime dengan operasi string biasa, dan kemudian jalankan bahwa kode dengan melewatkan ke fungsi evaluasi khusus. Untuk mengimplementasikan fitur ini dalam bahasa dikompilasi, program biasanya harus dikirimkan dengan perpustakaan runtime yang mencakup versi dari kompiler sendiri.

[ sunting ] kompilasi Perangkat Keras

Output dari beberapa kompiler dapat menargetkan hardware pada tingkat yang sangat rendah, misalnya Gerbang Lapangan Programmable Array (FPGA) atau terstruktur Aplikasi spesifik sirkuit terpadu (ASIC). Kompiler tersebut dikatakan keras compiler atau alat sintesis karena kode sumber mereka kompilasi efektif mengontrol konfigurasi akhir dari perangkat keras dan bagaimana ia beroperasi, output dari kompilasi tidak instruksi yang dieksekusi dalam urutan - hanya interkoneksi transistor atau tabel lookup. Sebagai contoh, XST adalah Xilinx Sintesis Alat yang digunakan untuk mengkonfigurasi FPGA. Alat serupa yang tersedia dari altera, Synplicity, Synopsys dan vendor lainnya.

[ sunting ] Kompilator konstruksi

Pada hari-hari awal, pendekatan yang diambil untuk merancang compiler yang digunakan secara langsung dipengaruhi oleh kompleksitas pengolahan, pengalaman dari orang (s) merancang itu, dan sumber daya yang tersedia.
Sebuah compiler untuk bahasa yang relatif sederhana yang ditulis oleh satu orang mungkin sepotong, tunggal monolitik perangkat lunak. Ketika bahasa sumber besar dan kompleks, dan kualitas output tinggi diperlukan, desain dapat dibagi menjadi beberapa fase relatif independen. Setelah fase yang terpisah berarti pembangunan dapat membagi menjadi bagian-bagian kecil dan diberikan kepada orang yang berbeda. Hal ini juga menjadi jauh lebih mudah untuk mengganti fase tunggal dengan satu diperbaiki, atau untuk memasukkan fase baru nanti (misalnya, optimasi tambahan).
Pembagian proses kompilasi ke tahap diperjuangkan oleh Mutu Produksi Kompilator Kompilator-Proyek (PQCC) di Carnegie Mellon University. Proyek ini memperkenalkan istilah ujung depan, akhir tengah, dan ujung belakang.
Semua kecuali yang terkecil dari kompiler memiliki lebih dari dua fase. Namun, fase ini biasanya dianggap sebagai bagian dari front end atau back end. Titik di mana kedua ujungnya bertemu terbuka untuk diperdebatkan. Ujung depan umumnya dianggap berada di tempat pengolahan sintaksis dan semantik terjadi, bersama dengan terjemahan ke tingkat yang lebih rendah dari representasi (dari kode sumber).
Ujung tengah biasanya dirancang untuk melakukan optimasi pada bentuk lain dari kode sumber atau kode mesin. Ini source code / kode mesin kemerdekaan ini dimaksudkan untuk memungkinkan optimasi generik untuk dibagi antara versi compiler yang mendukung bahasa yang berbeda dan prosesor target.
Ujung belakang mengambil output dari tengah. Ini dapat melakukan analisis yang lebih, transformasi dan optimasi yang untuk komputer tertentu. Kemudian, itu menghasilkan kode untuk prosesor tertentu dan OS.
Pendekatan front-end/middle/back-end memungkinkan untuk menggabungkan ujung depan untuk berbagai bahasa dengan ujung kembali untuk berbagai CPU . Contoh-contoh praktis dari pendekatan ini adalah GNU Compiler Collection , LLVM , dan Amsterdam Compiler Kit , yang memiliki beberapa depan berakhir, analisis bersama dan beberapa back-berakhir.

[ sunting ] Satu-pass vs multi-pass compiler

Klasifikasi compiler dengan jumlah melewati memiliki latar belakang dalam keterbatasan sumber daya perangkat keras komputer. Kompilasi melibatkan melakukan banyak pekerjaan dan komputer awal tidak memiliki cukup memori untuk mengandung satu program yang melakukan semua pekerjaan ini. Jadi kompiler tersebut dibagi menjadi program kecil yang masing-masing dibuat lulus atas sumber (atau beberapa representasi dari itu) melakukan beberapa analisis yang diperlukan dan terjemahan.
Kemampuan untuk mengkompilasi dalam single pass telah klasik dilihat sebagai keuntungan karena menyederhanakan pekerjaan menulis compiler dan satu-pass compiler umumnya melakukan kompilasi lebih cepat daripada multi-pass compiler . Dengan demikian, sebagian didorong oleh keterbatasan sumber daya sistem awal, bahasa awal banyak yang dirancang khusus sehingga mereka dapat dikompilasi dalam single pass (misalnya, Pascal ).
Dalam beberapa kasus desain sebuah fitur bahasa mungkin memerlukan compiler untuk melakukan lebih dari satu melewati sumber. Sebagai contoh, pertimbangkan sebuah deklarasi yang muncul pada baris 20 dari sumber yang mempengaruhi terjemahan pernyataan yang muncul pada baris 10. Dalam hal ini, pertama perlu untuk mengumpulkan informasi tentang deklarasi muncul setelah pernyataan bahwa mereka mempengaruhi, dengan penerjemahan yang sebenarnya terjadi selama lulus berikutnya.
Kerugian dari kompilasi dalam single pass adalah bahwa hal itu tidak mungkin untuk melakukan banyak canggih optimasi yang diperlukan untuk menghasilkan kode berkualitas tinggi. Ini bisa sulit untuk menghitung persis berapa banyak melewati sebuah kompiler mengoptimalkan membuat. Misalnya, fase yang berbeda dari optimasi dapat menganalisis satu ekspresi berkali-kali tetapi hanya menganalisis ekspresi lain sekali.
Memisahkan sebuah kompiler menjadi program kecil adalah teknik yang digunakan oleh para peneliti tertarik untuk memproduksi compiler provably benar. Membuktikan kebenaran dari serangkaian program kecil sering membutuhkan usaha kurang dari membuktikan kebenaran program, lebih besar tunggal, setara.
Sedangkan multi-pass compiler output khas kode mesin dari lintas terakhir, ada beberapa jenis lainnya:
  • Sebuah " sumber-to-source compiler "adalah jenis compiler yang mengambil bahasa tingkat tinggi sebagai input dan output bahasa tingkat tinggi. Sebagai contoh, sebuah parallelizing otomatis compiler akan sering mengambil dalam program bahasa tingkat tinggi sebagai input dan kemudian mengubah kode dan menjelaskannya dengan penjelasan kode paralel (misalnya OpenMP ) atau konstruksi bahasa (misalnya Fortran yang DOALL pernyataan).
  • Tahap compiler yang mengkompilasi dengan bahasa assembly dari mesin teoritis, seperti beberapa Prolog implementasi
    • Mesin Prolog adalah juga dikenal sebagai Mesin Abstrak Warren (atau WAM).
    • Kompiler untuk bytecode Java , Python , dan banyak lagi juga merupakan subtipe ini.
  • Just-in-time compiler , yang digunakan oleh sistem Smalltalk dan Java, dan juga oleh Microsoft. NET Common Language Menengah (CIL)
    • Aplikasi yang disampaikan dalam bytecode, yang dikompilasi ke kode mesin asli sesaat sebelum eksekusi.

[ sunting ] Front end

Ujung depan menganalisis kode sumber untuk membangun representasi internal dari program, yang disebut representasi intermediate atau IR. Hal ini juga mengelola tabel simbol , struktur data pemetaan setiap simbol dalam kode sumber untuk informasi yang terkait seperti lokasi, jenis dan ruang lingkup. Hal ini dilakukan melalui beberapa tahapan, yang meliputi beberapa hal sebagai berikut:
  1. Jalur rekonstruksi. Bahasa yang kulit pengasah kata kunci mereka atau memungkinkan ruang sewenang-wenang dalam pengidentifikasi memerlukan fase sebelum parsing, yang mengubah urutan karakter input ke bentuk kanonik siap untuk parser. The top-down , rekursif-keturunan , meja-driven parser yang digunakan dalam tahun 1960-an biasanya membaca sumber satu karakter pada satu waktu dan tidak memerlukan fase tokenizing terpisah. Atlas Autocode , dan Imp (dan beberapa implementasi dari ALGOL dan Karang 66 ) adalah contoh bahasa stropped yang kompiler akan memiliki fase Rekonstruksi Line.
  2. Analisis leksikal istirahat teks kode sumber menjadi potongan-potongan kecil yang disebut token. Setiap bukti merupakan unit atom tunggal bahasa, misalnya sebuah kata kunci , identifier atau nama simbol . Sintaks token biasanya bahasa biasa , sehingga negara yang terbatas robot dibangun dari ekspresi reguler dapat digunakan untuk mengenalinya. Fase ini juga disebut lexing atau memindai, dan perangkat lunak melakukan analisis leksikal disebut penganalisis leksikal atau scanner.
  3. Preprocessing . Beberapa bahasa, misalnya, C , membutuhkan fase preprocessing yang mendukung makro substitusi dan kompilasi bersyarat. Biasanya tahap preprocessing terjadi analisis sebelum sintaksis atau semantik, misalnya dalam kasus C, preprocessor memanipulasi token leksikal daripada bentuk sintaksis. Namun, beberapa bahasa seperti Skema substitusi makro dukungan berdasarkan bentuk-bentuk sintaksis.
  4. Analisis sintaks melibatkan parsing urutan token untuk mengidentifikasi struktur sintaksis dari program ini. Fase ini biasanya membangun pohon parse , yang menggantikan urutan linier dari token dengan struktur pohon dibangun sesuai dengan aturan dari tata bahasa formal yang mendefinisikan sintaks bahasa itu. Pohon parse sering dianalisis, ditambah, dan diubah oleh fase kemudian di compiler.
  5. Analisis semantik adalah fase di mana compiler menambahkan informasi semantik ke pohon parse dan membangun tabel simbol. Fase ini melakukan pemeriksaan semantik seperti memeriksa jenis (mengecek kesalahan jenis), atau mengikat objek (variabel referensi menghubungkan dan fungsi dengan definisi mereka), atau tugas yang pasti (mengharuskan semua variabel lokal harus diinisialisasi sebelum digunakan), menolak program-program yang salah atau mengeluarkan peringatan. Analisis semantik biasanya membutuhkan pohon parsing lengkap, yang berarti bahwa fase ini secara logis mengikuti parsing fase, dan secara logis mendahului generasi kode fase, meskipun sering mungkin untuk melipat beberapa tahap menjadi satu melewati kode dalam implementasi compiler.

[ sunting ] end Kembali

Istilah bagian belakang kadang-kadang bingung dengan kode generator karena tumpang tindih fungsi menghasilkan kode perakitan. Beberapa literatur menggunakan akhir tengah untuk membedakan analisis generik dan tahap optimasi di back end dari mesin tergantung generator kode.
Tahapan utama dari back end meliputi:
  1. Analisis : ini adalah pengumpulan informasi program dari representasi menengah yang berasal dari input. Analisis khas adalah analisis aliran data untuk membangun menggunakan-mendefinisikan rantai , analisis ketergantungan , alias analisis , pointer analisis , analisis melarikan diri dll Analisis yang akurat adalah dasar untuk optimasi compiler. Para grafik panggilan dan grafik kontrol aliran biasanya juga dibangun selama tahap analisis.
  2. Optimasi : representasi bahasa menengah berubah menjadi setara fungsional tapi lebih cepat (atau lebih kecil) bentuk. Optimasi populer adalah ekspansi inline , penghapusan kode mati , konstanta propagasi , transformasi lingkaran , mendaftar alokasi dan bahkan paralelisasi otomatis .
  3. Generasi kode : bahasa intermediate berubah diterjemahkan ke dalam bahasa output, biasanya asli bahasa mesin dari sistem. Hal ini melibatkan keputusan sumber daya dan penyimpanan, seperti variabel yang memutuskan untuk masuk ke dalam register dan memori dan pemilihan dan penjadwalan instruksi mesin yang tepat bersama dengan mode pengalamatan yang terkait (lihat juga Sethi-Ullman algoritma ). Data Debug juga mungkin perlu dihasilkan untuk memfasilitasi debugging .
Analisis compiler adalah prasyarat untuk setiap optimasi compiler, dan mereka erat bekerja sama. Sebagai contoh, analisis ketergantungan sangat penting untuk transformasi lingkaran .
Selain itu, lingkup analisis optimasi compiler dan sangat bervariasi, dari kecil sebagai blok dasar ke tingkat prosedur / fungsi, atau bahkan atas seluruh program ( optimasi interprosedural ). Jelas, compiler berpotensi dapat melakukan pekerjaan lebih baik dengan menggunakan pandangan yang lebih luas. Tapi itu pandangan yang luas tidak bebas: ruang lingkup analisis besar dan optimasi yang sangat mahal dalam hal waktu kompilasi dan ruang memori, ini terutama berlaku untuk analisis interprosedural dan optimasi.
Interprosedural analisis dan optimasi yang umum di compiler komersial modern dari HP , IBM , SGI , Intel , Microsoft , dan Sun Microsystems . Open source GCC dikritik untuk waktu yang lama untuk optimasi interprosedural kurang kuat, tetapi berubah dalam hal ini. Lain kompiler open source dengan analisis lengkap dan infrastruktur optimasi Open64 , yang digunakan oleh banyak organisasi untuk penelitian dan tujuan komersial.
Karena waktu tambahan dan ruang yang dibutuhkan untuk analisis compiler dan optimasi, beberapa kompiler melewatkan mereka secara default. Pengguna harus menggunakan opsi kompilasi secara eksplisit memberitahu compiler optimasi yang harus diaktifkan.

[ sunting ] Kompilator kebenaran

Kebenaran compiler adalah cabang rekayasa perangkat lunak yang berhubungan dengan berusaha untuk menunjukkan bahwa kompilator berperilaku sesuai dengan yang spesifikasi bahasa [. rujukan? ] Teknik termasuk mengembangkan kompiler menggunakan metode formal dan menggunakan pengujian ketat (validasi compiler sering disebut) pada kompiler yang ada .

[ sunting ] teknik Terkait

Bahasa assembly adalah jenis rendah tingkat bahasa dan program yang mengkompilasi itu lebih dikenal sebagai assembler, dengan program invers dikenal sebagai disassembler .
Sebuah program yang menerjemahkan dari bahasa tingkat rendah ke tingkat yang lebih tinggi satu adalah decompiler .
Sebuah program yang menerjemahkan antara bahasa tingkat tinggi biasanya disebut penerjemah bahasa, penerjemah sumber ke sumber, konverter bahasa, atau bahasa Rewriter . Istilah terakhir ini biasanya diterapkan untuk terjemahan yang tidak melibatkan perubahan bahasa.

[ sunting ] konferensi internasional dan organisasi

Setiap tahun, Konferensi Bersama Eropa tentang Teori dan Praktik Perangkat Lunak (ETAPS) mensponsori Konferensi Internasional Konstruksi Kompilator (CC), dengan kertas baik dari sektor akademis dan industri. [6]

[ sunting ] Lihat juga

Tidak ada komentar:

Posting Komentar