1 poin oleh GN⁺ 8 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • CS 6120, mata kuliah tingkat doktoral dari Cornell CS, menawarkan alur pembelajaran terpadu dari representasi menengah, aliran data, optimisasi, paralelisasi, JIT, hingga garbage collection bagi siapa pun yang ingin mempelajari compiler dan implementasi bahasa pemrograman secara sistematis
  • Versi belajar mandiri ini disusun seperti mengambil 4 SKS tanpa nilai di universitas virtual, dengan jadwal linear yang memandu peserta mengikuti video, catatan kuliah, bacaan paper, dan tugas implementasi
  • Praktikum menggunakan LLVM dan IR pendidikan Bril untuk membantu memverifikasi konsep compiler yang abstrak lewat penulisan kode nyata
  • Berbeda dari kelas Cornell yang sebenarnya, tenggat tugas bisa diabaikan, tetapi peserta tidak dapat ikut diskusi Zulip, dan sebagai pengganti proyek akhir semester ada tugas penutup khusus versi belajar mandiri
  • Materi kuliah dibuka sebagai open source di GitHub sehingga siapa pun dapat melaporkan masalah, dan setelah selesai peserta bisa mengirim masukan lewat formulir umpan balik

Struktur kursus dan cara mengikuti

  • CS 6120 adalah mata kuliah implementasi bahasa pemrograman yang dibuat oleh Adrian Sampson dari Cornell CS
  • Membahas topik dasar compiler umum sekaligus topik yang bernuansa riset
    • representasi menengah
    • aliran data
    • optimisasi klasik
    • paralelisasi
    • kompilasi JIT
    • garbage collection
  • Pembelajaran berlanjut ke membaca paper dan tugas mengutak-atik open source
    • menggunakan LLVM
    • menggunakan Bril, IR pendidikan untuk perkuliahan
  • Kurikulum belajar mandiri disusun sebagai jadwal linear yang menggabungkan menonton video dan membaca paper
  • Beberapa pelajaran mencakup tugas implementasi, dengan penulisan kode terbuka untuk memahami konsep abstrak
  • Ada perbedaan antara CS 6120 reguler dan versi belajar mandiri
    • tenggat tugas bisa diabaikan
    • tidak dapat berpartisipasi di thread diskusi Zulip
    • kelas reguler memiliki proyek akhir semester
    • tugas akhir versi belajar mandiri adalah “mengubah dunia dengan sihir compiler”
  • Kursus ini tersedia sebagai open source di GitHub sehingga bug bisa dilaporkan jika ada masalah
  • Setelah selesai, peserta dapat mengisi formulir umpan balik

Alur pelajaran dan bahan bacaan

1 komentar

 
GN⁺ 8 jam lalu
Opini Hacker News
  • Bagian kompiler dinamis hampir seluruhnya lebih dekat ke pembahasan tentang trace compilation. Secara umum, trace compilation adalah jalan buntu dan sudah beberapa kali ditinggalkan
    Menurut saya, konsep yang lebih penting di sini adalah type feedback, speculative execution dan deoptimisasi, kompiler cepat, serta layering
    Secara keseluruhan kuliahnya terlihat bagus, dan sangat bagus juga bahwa sebanyak ini materi dibuka secara online

    • Secara historis, tracing terbukti tidak praktis sebagai prinsip pengorganisasian, tetapi menurut saya ini tetap konsep yang memperluas cara berpikir jika dipelajari
      Seperti yang disebutkan, saya ingin ada konteks tambahan tentang hal-hal yang benar-benar bekerja di industri
    • Saya sedang mengerjakan torch.compile milik PyTorch, dan ini juga merupakan kompiler tracing
      Hanya saja, area ini mungkin cukup sempit dan juga sangat berbeda dari kompiler tradisional, jadi kalau melihat sebagian dari yang kami lakukan, Anda mungkin akan merasa agak tidak nyaman
    • JAX juga adalah kompiler tracing
      Tentu saja saya paham bahwa ruang masalahnya sangat berbeda dari TraceMonkey atau LuaJIT
    • Makalah TraceMonkey ada dalam daftar bacaan untuk ujian kualifikasi doktoral saya, dan kebetulan waktunya bertepatan dengan saat TraceMonkey dihapus dari SpiderMonkey
      Saya sempat berbicara dengan salah satu pengembang saat itu, mungkin Jason Orendorff, dan dia berkata bahwa tracing tidak terlalu berhasil, meski mungkin bisa bekerja dalam kondisi yang terbatas
      Namun, saya benar-benar lupa apa kondisi itu
    • Trace compilation bukan jalan buntu
      LuaJIT bekerja dengan baik pada program besar, juga pada ratusan juta server dan perangkat
      Sangat disayangkan bahkan para akademisi terus mengulang klise ini. Rasanya seperti pepatah bahwa ketidaktahuan adalah berkah
  • Tulisan terkait sebelumnya:
    CS 6120: Advanced Compilers: The Self-Guided Online Course - https://news.ycombinator.com/item?id=39577878 - Maret 2024, 102 komentar
    Advanced Compilers: Self-Guided Online Course - https://news.ycombinator.com/item?id=35130975 - Maret 2023, 82 komentar
    Advanced Compilers: Self-Guided Online Course - https://news.ycombinator.com/item?id=25386756 - Desember 2020, 232 komentar

  • Saya agak bingung mengapa kuliah ini disebut lanjutan. Sebagian besar topik, misalnya dead code elimination, data flow, dominator analysis, dan bentuk SSA, tampak seperti hal yang masuk ke kuliah kompiler pertama

    • Nomor kuliahnya cukup teratur, jadi kita bisa mencari kuliah “kompiler pengantar” yang dimaksud: https://www.cs.cornell.edu/courses/cs4120/2026sp/?schedule
      Singkatnya, kompiler pada dasarnya dibagi menjadi dua mata kuliah, dan mata kuliah pertama membahas unsur minimum untuk membuat kompiler: analisis leksikal, parsing, code generation, dan register allocation
      Mata kuliah kedua membahas cara membuat kompiler pengoptimal
    • Saya sudah membaca sangat banyak materi terkait, tetapi kebanyakan tidak memuat hal-hal seperti itu
      Dalam praktiknya, entah itu kompiler atau interpreter, backend hampir selalu dibiarkan sebagai “latihan untuk pembaca”
      Sulit dibayangkan betapa banyak hal yang masih harus dicari tahu, seperti cara membuat closure, melacak environment, pattern matching, representasi memori, dan lain-lain
      Semua hal yang menarik harus dicari sendiri
      PS: ini baru untuk satu tahun saja: https://gist.githubusercontent.com/mamcx/e1743571b9a1ea163a7...
    • Menurut saya, orang nonspesialis biasanya mulai dari parsing dan sering kali tidak pernah menyentuh backend
      Saya sudah membaca dua buku tentang interpreter dan kompiler, dan backend tidak banyak dibahas
      Mungkin ini lebih dekat ke kuliah pengantar backend
    • Jadi saya penasaran, apa sebenarnya yang membuatnya lanjutan. Jika dead code elimination, data flow, SSA, instruction selection, dan register allocation dibahas dengan benar, itu pada dasarnya sudah mendekati 98% dari backend
  • Apakah ada lagi kuliah ilmu komputer tingkat universitas online yang self-guided seperti ini?

    • Ada puluhan. Cukup cari dengan kata “mooc”
      Beberapa profesor juga membuka kuliah dan tugas di luar framework “mooc”
      Saya pernah mendapat jawaban dari profesor ketika bertanya lewat komentar. Internet kadang memang masih keren
  • Dibandingkan dengan Writing a C compiler karya Nora Sandler, bagaimana perbedaan manfaat yang bisa didapat pembaca?

    • Buku itu lebih dekat ke materi yang didapat dari kuliah kompiler tingkat sarjana, sedangkan kuliah ini membahas materi yang lebih lanjutan
      Jika Anda pemula atau sekadar mendalaminya sebagai hobi, lebih baik mulai dari buku itu atau materi serupa, lalu mencoba kuliah ini sambil menutup kekosongan pengetahuan
  • Apakah ada kuliah belajar mandiri tentang compiler dasar yang bisa dilihat sebelum masuk ke tahap lanjutan?

  • Saya pernah mendengar podcast tentang compiler Rust, dan sepertinya dikatakan bahwa pada titik tertentu ada algoritme machine learning yang dipakai untuk menentukan apakah suatu kode bisa membuat sistem crash

    • Saya belum pernah mendengar hal seperti itu dan cukup yakin itu hampir pasti salah. Tentu saja, istilah “machine learning” bisa sangat luas
      Ada sumbernya?
  • Saya benar-benar penasaran apa yang dilakukan alexia massalin belakangan ini selain menerima royalti paten microunity