- Sebagian besar buku ajar compiler sangat teoretis dan sangat tebal, sehingga pemula sulit mengimplementasikan compiler yang benar-benar berjalan
- Sebagai bahan praktis untuk mengatasinya, diperkenalkan seri Jack Crenshaw, “Let’s Build a Compiler!”, yang membahas compiler Pascal sederhana dengan struktur single-pass
- Tutorial ini mendukung pembelajaran eksperimental melalui penggabungan parsing dan code generation, optimisasi minimal, serta versi C dan Forth
- Bahan kedua, makalah “A Nanopass Framework for Compiler Education”, menyajikan struktur compiler modular yang terdiri dari banyak transformasi sederhana (pass)
- Setelah membangun pengalaman implementasi nyata lewat dua bahan ini, barulah jika perlu dapat melanjutkan pendalaman dengan buku ajar tradisional (Dragon Book)
Realitas belajar compiler dan dua makalah kunci
- Ada kritik bahwa buku compiler yang ada terlalu tebal dan sulit, sehingga pemula kesulitan menulis compiler yang benar-benar berfungsi
- Kebanyakan buku membahas topik besar seperti transformasi regular expression, teori tata bahasa, dan lain-lain, tanpa memberi titik awal yang praktis
- Akibatnya, terbentuk kesalahpahaman dan mitos bahwa “compiler itu sulit”
- Sebagai bahan representatif yang mematahkan anggapan ini, diperkenalkan seri Jack Crenshaw, “Let’s Build a Compiler!”
- Tutorial yang dimulai pada 1988 ini membahas compiler single-pass setingkat Turbo Pascal
- Strukturnya menggabungkan parsing dan code generation, dan hanya melakukan optimisasi minimal
- Awalnya ditulis dalam Pascal, dan kemudian juga ada versi C serta terjemahan Forth
- Versi Forth memudahkan eksperimen dan pemahaman berkat sifat bahasanya yang interaktif
- Keterbatasan seri Crenshaw adalah tidak adanya representasi internal program (abstract syntax tree, AST)
- Di Pascal, manipulasi tree cukup rumit sehingga dihilangkan, tetapi dalam bahasa tingkat tinggi seperti Python, Ruby, Erlang, Haskell, Lisp hal ini bisa diimplementasikan dengan mudah
- Bahasa-bahasa ini pada dasarnya dirancang untuk memanipulasi data berstruktur tree
- Bahan kedua yang direkomendasikan adalah makalah Sarkar, Waddell, Dybvig
“A Nanopass Framework for Compiler Education”
- Gagasan intinya adalah bahwa “compiler merupakan serangkaian proses yang secara bertahap mentransformasikan representasi internal program”
- Diusulkan struktur yang terdiri dari puluhan hingga ratusan transformasi sederhana (pass)
- Setiap transformasi dijaga sesederhana mungkin, dan menghindari keterikatan antar-transformasi
- Framework tersebut mendefinisikan input dan output tiap pass secara eksplisit
- Bahasa implementasinya adalah Scheme, dan verifikasi dijalankan saat runtime berbasis tipe dinamis
- Setelah menulis compiler nyata melalui dua bahan ini, bila perlu pembelajaran dapat dilanjutkan lebih dalam dengan buku ajar tradisional seperti Dragon Book
- Namun, hanya dengan dua bahan ini pun sudah cukup untuk memperoleh pengalaman praktis membuat compiler
Belum ada komentar.