2 poin oleh GN⁺ 5 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • 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

1 komentar

 
GN⁺ 5 jam lalu
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

    • Mungkin memang itu susunan yang disengaja
      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?

    • Dragon Book itu agak unik
      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
    • Bahkan hanya dari kata pengantar edisi 2006, para penulis tampaknya menganggap buku ini pada umumnya sebagai buku teks tingkat pascasarjana
      “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

    • Tidak juga
      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
    • Pembuatan assembly itu sendiri sebenarnya cukup sederhana; yang sulit adalah mengoptimalkan semuanya
      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
    • Saat mempelajari bahasa baru, hal yang paling saya suka adalah cepat-cepat membuat lexer/parser dan REPL
      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”

    • Ini tampaknya disusun agar di tingkat sarjana orang bisa mengikuti topik-topik inti tentang cara kerja bahasa
      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
    • Kalau ingin belajar desain bahasa pemrograman, buku apa yang Anda rekomendasikan? Saya penasaran topik apa saja yang terlewat
  • Senang melihat tulisan tentang compiler seperti ini di tengah topik AI dan kebisingannya

    • Hal aneh dari kebencian buta terhadap AI adalah, tanpa bukti orang bisa menempelkan label sampah AI ke tulisan apa pun, dan kubu anti-AI akan membencinya tanpa dasar
      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