Buku Ajar Pengantar Compiler dan Desain Bahasa (2021)
(dthain.github.io)- Buku ajar online gratis yang dikembangkan untuk mata kuliah compiler Notre Dame CSE 40243; PDF lengkap dan PDF per bab dapat langsung diunduh untuk dipelajari
- Disusun untuk satu semester, mengikuti alur pembuatan compiler dan membahas proses menerjemahkan program bahasa tingkat tinggi menjadi program bahasa tingkat rendah
- Pembelajar ditargetkan mengimplementasikan compiler sederhana yang menerima bahasa mirip C sebagai input dan mengubahnya menjadi assembly X86 atau ARM
- Paling sesuai untuk tingkat mahasiswa S1 yang memiliki pengalaman pemrograman C serta telah mempelajari struktur data dan arsitektur komputer
- PDF dapat digunakan untuk keperluan pribadi dan akademik, tetapi pencetakan dan distribusi komersial dilarang; materi terbaru harus dicek di compilerbook.org
Buku ajar berbasis mata kuliah compiler Notre Dame
- Introduction to Compilers and Language Design adalah buku ajar online gratis yang dikembangkan Douglas Thain untuk mata kuliah compiler CSE 40243 di University of Notre Dame
- Edisi ke-2 adalah versi 2020, dengan tanggal revisi tercantum 15 Januari 2021
- Pembaca yang menginginkan buku fisik dapat membeli versi hardcover atau paperback
- Buku ajar ini membahas aspek teoretis dan praktis ilmu komputer melalui proses membuat compiler dari awal
- Target pembelajaran akhirnya adalah mengimplementasikan compiler sederhana yang menerima bahasa mirip C sebagai input dan menerjemahkannya menjadi assembly X86 atau ARM
PDF, kode contoh, dan ketentuan penggunaan
- PDF buku lengkap dan PDF per bab tersedia
- Lampiran mencakup Sample Course Project, The B-Minor Language, dan Coding Conventions
- Repositori GitHub compilerbook-examples berisi materi praktik yang sesuai dengan buku
- Beberapa scanner dan parser
- Struktur kode awal untuk compiler proyek
- Contoh test case untuk tiap tahap: scanner, parser, type checker, dan code generator
- PDF dapat diunduh, dicetak, dan digunakan untuk keperluan pribadi serta akademik
- Pencetakan atau distribusi komersial dilarang; alih-alih menyalin dan mendistribusikan PDF secara lokal, mahasiswa sebaiknya diarahkan ke halaman compilerbook.org
- Salah ketik atau kesalahan dapat dikirim melalui email ke
dthain@nd.edudengan judulCompiler Book Errata
1 komentar
Komentar Hacker News
Saya pernah mengambil kelas compiler Dr. Thain di universitas, dan itu benar-benar luar biasa
Beliau pengajar yang hebat, dan proyek kelasnya membuat kami bisa membangun compiler bergaya C sendiri langkah demi langkah. Proyek contoh di sini juga tampak hampir sama dengan proyek yang saya kerjakan waktu itu, dan saya sangat merekomendasikan untuk mengikutinya sampai selesai
Saya belum tahu apakah ini masih dibahas di mata kuliah tertentu, tetapi C4(https://news.ycombinator.com/item?id=8558822) dan C4x86(https://news.ycombinator.com/item?id=8746054) tampaknya bagus sebagai topik pembelajaran selama satu semester
Karena itu adalah compiler subset C yang sangat kecil dan bisa mengompilasi dirinya sendiri, ini juga tampak cocok sebagai dasar untuk tugas tambahan yang memperluas fiturnya
Tulisan terkait: Introduction to Compilers and Language Design (2021) - https://news.ycombinator.com/item?id=31388741 - Mei 2022, 68 komentar
Introduction to Compilers and Language Design - https://news.ycombinator.com/item?id=19728749 - April 2019, 1 komentar
Rasanya ini hanya berputar dalam cakupan sempit C dan konvensi-konvensinya yang khas
Di deskripsi buku juga tertulis, “buku pengantar satu semester yang memungkinkan pembaca membuat compiler sederhana yang menerima bahasa mirip C”
Menurut kata pengantar, apakah Dragon Book itu setingkat pascasarjana tingkat lanjut?
Itu memang klasik, tetapi hanya membahas sedikit dasar teori komputasi, lalu sisanya lebih mirip tinjauan cepat atas materi compiler
Topik compiler modern tingkat pascasarjana tidak benar-benar dibahas dengan baik, dan ini juga bukan buku yang praktis. Tiger Book jauh lebih baik sebagai pengantar dari sisi keseimbangan antara praktik dan teori
Saya rasa topik compiler yang benar-benar lanjut memang sulit dicakup dengan baik dalam satu buku saja
“Untuk membahas seluruh atau sebagian besar buku ini dibutuhkan setidaknya dua kuartal atau dua semester. Biasanya paruh pertama dibahas di program sarjana, sedangkan paruh kedua yang menekankan optimisasi kode dibahas di program pascasarjana atau mata kuliah kedua tingkat menengah”
Kadang saya merasa orang-orang yang merancang bahasa dan membuat compiler itu benar-benar hebat
Karena penasaran saya sempat mencoba membuat bahasa sendiri, tetapi terlalu sulit jadi saya berkompromi dengan backend C yang sederhana. Orang-orang yang berkontribusi ke LLVM rasanya pasti juga paham seluruh proses sampai pembuatan assembly, dan itu sangat mengagumkan
Saya dulunya pengembang web lalu pindah ke pekerjaan compiler berbasis LLVM, dan LLVM sendiri sangat besar sehingga tidak mudah memahami semua area dan mekanismenya
Tetapi untuk menulis pass yang tidak terlalu rumit, memperbaiki bug, dan memperbaiki regresi, tidak perlu pengetahuan yang sangat istimewa
Menulis assembler sendiri adalah cara yang bagus untuk membiasakan diri dengan struktur compiler, karena Anda tidak perlu memikirkan optimisasi, tipe, atau berbagai fitur yang membuat bahasa tingkat tinggi menjadi rumit
Hanya dengan mengimplementasikan frontend untuk tata bahasa yang saya buat sendiri dan loop evaluasi kecil, kita sudah bisa melihat banyak bagian dari bahasa sungguhan. Ini juga bagus untuk belajar dan mengajar karena tidak tersendat oleh pemecahan masalah nyata
Jadi tidak perlu sama sekali merasa malu karena berkompromi dengan backend C yang sederhana
Hanya dengan melihat daftar isinya, topik utama desain bahasa hampir tidak terlihat
Dibanding judulnya, ini tampaknya lebih dekat ke sekadar “pengantar compiler”
Tingkatnya cocok untuk memahami sesuatu seperti Python atau Ruby, atau compiler Pascal yang lebih sederhana
Compiler dan desain bahasa adalah bidang yang sudah setua industri ini sendiri, jadi pengetahuannya terlalu banyak untuk dimuat dalam satu mata kuliah. Meski begitu, kuliah ini tetap bagus, dan menurut saya lebih baik daripada kuliah serupa yang berbasis Dragon Book
Senang melihat tulisan tentang compiler seperti ini di tengah topik AI dan kebisingannya
Pemanfaatan AI yang benar dan berkualitas tetap bernilai, dan karya non-AI juga bernilai. Akan bagus jika orang punya standar yang masuk akal untuk hasil terkait AI, alih-alih sembarangan merendahkan karya orang lain
Tulisan yang bagus
Yang mengesankan adalah bagaimana ini menyegarkan kembali pengetahuan yang pernah saya pelajari lewat contoh-contoh yang sangat baik