Topik ini membandingkan empat sumber literatur compiler yang sering disebut sebagai rujukan utama, yaitu buku Dragon oleh Aho, Lam, Sethi, dan Ullman, Crafting Interpreters oleh Robert Nystrom, Engineering a Compiler oleh Keith Cooper dan Linda Torczon, serta Essentials of Compilation oleh Jeremy Siek. Pembaca memperoleh peta bacaan yang membandingkan fokus, pendekatan, akses daring, dan target pembaca keempat sumber, sehingga dapat memilih sumber yang sesuai dengan kebutuhan setelah proyek kursus selesai. Setelah membaca topik ini, pembaca dapat menempatkan keempat sumber pada peta literatur compiler, menyebutkan perbedaan fokus tiap sumber, dan memilih sumber yang sesuai untuk pertanyaan lanjutan.
Buku Dragon sebagai teori klasik#
Buku Dragon, judul resmi Compilers: Principles, Techniques, and Tools, adalah buku teks compiler klasik yang ditulis oleh Alfred Aho, Monica Lam, Ravi Sethi, dan Jeffrey Ullman. Edisi pertama diterbitkan tahun 1986 oleh tiga penulis, sebelum Lam bergabung pada edisi kedua tahun 2007. Julukan Dragon berasal dari sampulnya yang menggambarkan seorang ksatria melawan naga, dengan naga melambangkan kompleksitas compiler. Buku ini menjadi rujukan standar pada banyak kuliah S1 dan S2 ilmu komputer, terutama di Amerika Utara, sejak edisi pertamanya dirilis hingga sekarang.
Fokus buku Dragon adalah teori formal compiler. Buku ini membahas automata hingga dan ekspresi reguler sebagai dasar lexer, tata bahasa bebas konteks sebagai dasar parser, algoritma parsing LL dan LR, analisis semantik berbentuk atribut, optimasi berbasis aliran data, dan pembangkitan kode native. Banyak teorema disertai bukti, dan banyak algoritma disajikan dalam pseudokode yang dapat diimplementasikan. Karena fokusnya pada teori, buku Dragon kurang membahas praktik rekayasa compiler, misalnya bagaimana menulis parser tulis tangan yang efisien, bagaimana membangun tabel simbol yang praktis, atau bagaimana mengintegrasikan language server dengan editor. Topik-topik itu diisi oleh sumber modern berikutnya.
Crafting Interpreters sebagai jalur praktis#
Crafting Interpreters oleh Robert Nystrom adalah buku daring gratis yang ditulis secara bertahap sejak 2015 dan diterbitkan dalam bentuk cetak tahun 2021. Nystrom adalah engineer Google yang sebelumnya bekerja pada EA, dan pengalamannya membangun interpreter di industri terlihat pada gaya penulisan buku. Isi buku adalah pembangunan dua interpreter untuk bahasa Lox, yaitu jlox yang berbasis tree-walking interpreter di Java, dan clox yang berbasis bytecode stack VM di C. Pembaca mengikuti pembangunan dari lexer hingga garbage collector dengan kode penuh yang dapat dijalankan.
Pendekatan Crafting Interpreters bersifat praktis tanpa teori formal. Buku ini tidak membuktikan teorema, tidak menyajikan pseudokode, dan tidak menurunkan algoritma, melainkan memilih satu jalur implementasi yang dapat diikuti baris demi baris. Akses daring buku ini gratis di craftinginterpreters.com, sehingga pembaca dapat membaca seluruh bab tanpa membeli versi cetak. Target pembaca adalah pemula yang sudah menguasai satu bahasa pemrograman dan ingin membangun interpreter pertamanya. Topik yang dibahas Crafting Interpreters, termasuk lexer, parser, AST, dan stack VM, menjadi salah satu rujukan utama modul lexing dan pembangkitan kode pada jalur compiler ini.
Engineering a Compiler dan Essentials of Compilation#
Dua buku sisanya berdiri di antara teori dan praktik. Engineering a Compiler oleh Keith Cooper dan Linda Torczon diterbitkan edisi pertama tahun 2004, edisi kedua tahun 2012, dan edisi ketiga tahun 2023. Buku ini menekankan rekayasa compiler produksi dengan fokus pada optimasi dan back end, termasuk analisis aliran data, alokasi register, penjadwalan instruksi, dan optimasi antarprosedur. Pendekatannya lebih praktis daripada buku Dragon, dengan banyak contoh kode dan diskusi tentang pilihan implementasi, tetapi lebih formal daripada Crafting Interpreters. Target pembaca adalah mahasiswa S2 atau praktisi yang ingin membangun compiler produksi dengan back end yang lengkap.
Essentials of Compilation oleh Jeremy Siek diterbitkan MIT Press pada 2023 dan berbasis kuliah P423 atau P523 di Indiana University. Buku ini membangun compiler untuk subset Racket (versi Python juga tersedia) yang menargetkan x86-64 native secara bertahap, dengan delapan bahasa dari R0 hingga R7 yang masing-masing menambahkan satu fitur. Pendekatannya implementation-driven, sehingga setiap bab didampingi tugas yang membuat compiler pembaca menangani fitur baru. Akses buku ini tersedia dalam dua bentuk: cetak melalui MIT Press, dan sumber LaTeX buku ini tersedia terbuka di repositori IUCompilerCourse pada GitHub. Target pembaca adalah mahasiswa S2 yang sudah menguasai satu bahasa fungsional dan ingin pengalaman membangun compiler dengan target native.
Tabel perbandingan#
Tabel berikut merangkum fokus, pendekatan, akses daring, dan target pembaca keempat sumber. Kolom “Fokus” menyatakan bagian pipeline yang ditekankan, kolom “Pendekatan” menyatakan cara penyajian, kolom “Akses daring” menyatakan ketersediaan daring resmi, dan kolom “Target” menyatakan pembaca yang paling diuntungkan.
| Sumber | Fokus | Pendekatan | Akses daring | Target |
|---|---|---|---|---|
| Buku Dragon (Aho dkk.) | teori formal: automata, parsing, optimasi | formal, teorema dan pseudokode | tidak ada daring resmi | S2 atau S1 tahun akhir |
| Crafting Interpreters (Nystrom) | interpreter lengkap: lexer, AST, stack VM | praktis, kode penuh yang dijalankan | gratis di craftinginterpreters.com | pemula sampai menengah |
| Engineering a Compiler (Cooper & Torczon) | back end dan optimasi | praktis dengan dasar formal | cetak/beli, tidak ada daring resmi | S2 atau praktisi |
| Essentials of Compilation (Siek) | native compiler bertahap R0 hingga R7 | implementation-driven dengan tugas | sumber LaTeX terbuka di GitHub | S2 dengan latar fungsional |
Keempat sumber saling melengkapi. Buku Dragon memberi dasar teori yang membantu pembaca memahami mengapa suatu algoritma bekerja, Crafting Interpreters memberi pengalaman membangun interpreter dari nol, Engineering a Compiler memberi pemahaman rekayasa back end, dan Essentials of Compilation memberi pengalaman menargetkan native secara bertahap. Pembaca jalur compiler ini sebaiknya memulai dari Crafting Interpreters untuk membangun intuisi, lalu melengkapi dasar teori dengan buku Dragon, dan memperdalam rekayasa back end dengan Engineering a Compiler atau Essentials of Compilation bila ingin melanjutkan ke compiler produksi.
Ringkasan#
- Buku Dragon (Aho dkk.) adalah rujukan teori klasik dengan fokus pada automata, parsing, dan optimasi formal, cocok untuk mahasiswa S2 atau S1 tahun akhir.
- Crafting Interpreters (Nystrom) menyajikan jalur praktis membangun dua interpreter lengkap dengan kode yang dapat dijalankan, gratis daring di craftinginterpreters.com.
- Engineering a Compiler (Cooper & Torczon) menekankan rekayasa back end dan optimasi pada skala produksi, dengan pendekatan praktis berbasis formal.
- Essentials of Compilation (Siek) membangun compiler subset Racket ke x86-64 secara bertahap, dengan sumber LaTeX terbuka di GitHub sebagai pendamping edisi cetak MIT Press.
Referensi#
- Compilers: Principles, Techniques, and Tools — Wikipedia — Artikel ensiklopedia yang merangkum isi buku Dragon edisi pertama dan kedua beserta rujukan ke literatur terkait.
- Crafting Interpreters — Robert Nystrom — Buku daring gratis tentang pembangunan interpreter Lox dalam dua versi: jlox (Java) dan clox (C).
- Engineering a Compiler — 3rd Edition — Elsevier Shop — Halaman penerbit untuk edisi ketiga Engineering a Compiler oleh Cooper dan Torczon, dengan ringkasan isi dan spesifikasi cetak.
- Essentials of Compilation — MIT Press — Halaman penerbit MIT Press untuk buku Siek yang menjadi rujukan kursus kompilasi Indiana University.
- Essentials of Compilation — LaTeX sources — IUCompilerCourse GitHub — Repositori sumber LaTeX buku Siek yang dapat dikompilasi menjadi PDF secara lokal, menjadi akses daring resmi untuk isi buku.