16 poin oleh GN⁺ 5 hari lalu | Belum ada komentar. | Bagikan ke WhatsApp
  • 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.

Belum ada komentar.