10 poin oleh GN⁺ 2023-09-05 | 1 komentar | Bagikan ke WhatsApp
  • Penulis mengambil tantangan sulit untuk menulis kompiler C hanya dengan 500 baris kode Python
  • Kompiler ini menggunakan single-pass; berbeda dari kompiler dua fase pada umumnya yang lebih dulu membangun pohon sintaks lalu mengubahnya menjadi kode mesin, kompiler ini menghasilkan kode saat proses parsing berlangsung
  • Kompiler menargetkan WebAssembly, keputusan yang lahir lebih dari rasa ingin tahu daripada kepraktisan. Tantangan unik WebAssembly, seperti tidak adanya register dan penggunaan mesin stack, turut disorot
  • Karena batasan 500 baris, kompiler ini tidak mendukung fitur-fitur C tertentu seperti struct, enum, union, direktif preprocessor, floating-point, dan tipe 8-byte
  • Kompiler ini lulus 34 dari 220 kasus uji di c-testsuite, serta berhasil mengompilasi dan menjalankan program yang menghitung deret Fibonacci
  • Artikel ini memberikan analisis mendetail atas kode kompiler tersebut, menjelaskan bagaimana berbagai aspek sintaks C ditangani dan kesulitan apa yang muncul saat bekerja dengan WebAssembly
  • Meski kompiler itu kompleks, artikel ini menunjukkan bahwa dengan mengorbankan kualitas kode dan melakukan semuanya dalam satu fase, hasilnya bisa sangat ringkas
  • Artikel ini juga mengusulkan bahwa kompiler single-pass semacam ini dapat menjadi stage0 yang sangat baik untuk bahasa yang melakukan self-hosting karena keringkasannya
  • Jumlah baris kode diukur menggunakan alat sloccount, dengan komentar, docstring, dan baris kosong dikecualikan

1 komentar

 
GN⁺ 2023-09-05
Opini Hacker News
  • Artikel tentang pembuatan compiler C dengan 500 baris Python, dibandingkan dengan compiler Tiny Pascal yang diterbitkan pada tahun 1978
  • Compiler ini bersifat single-pass, dengan pembuatan kode dilakukan saat parsing, yang merupakan fitur yang dirancang khusus untuk C agar dapat menyesuaikan diri dengan keterbatasan memori komputer awal
  • Manfaat menulis compiler sendiri adalah membantu memahami compiler, interpreter, linker/loader, dan perangkat lunak sistem terkait, sekaligus membantu upaya debugging dan meningkatkan tingkat keterampilan pengembang
  • Proyek ini mirip dengan proyek lain seperti proyek TypeScript yang menghasilkan assembly x86, mengompilasinya menjadi biner, lalu menjalankannya
  • Artikel ini dipuji karena penjelasannya yang jelas, dan hal ini dianggap sebagai tantangan yang menyenangkan di ranah bahasa pemrograman aneh (esolangs)
  • Menulis compiler C dengan 500 baris kode yang mudah dipahami dianggap sebagai tantangan besar yang bahkan bagi pengembang berpengalaman pun dapat memerlukan waktu berbulan-bulan
  • Artikel ini membangkitkan rasa ingin tahu terhadap compiler kecil lain seperti compiler Scheme to WASM
  • Sebagai perbandingan, artikel tersebut menyebut jumlah baris kode (LOC) dari compiler C atau mirip C kecil lainnya, termasuk compiler struct paling awal karya Ritchie dan compiler C v7 Unix