1 puan yazan GN⁺ 8 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Cornell CS'in doktora düzeyindeki CS 6120 dersi, derleyicileri ve programlama dili gerçekleştirimini sistematik olarak öğrenmek isteyenler için ara gösterimlerden veri akışına, optimizasyondan paralelleştirmeye, JIT'ten çöp toplamaya kadar uzanan içeriği tek bir akışta sunuyor
  • Kendi kendine ilerlenen sürüm, sanal bir üniversitede 4 kredilik notsuz ders alma biçiminde kurgulanmış; videolar, ders notları, makale okumaları ve uygulama ödevleri doğrusal bir takvimle takip ediliyor
  • Uygulamalarda, soyut derleyici kavramlarını gerçek kod yazarak doğrulamak için LLVM ve eğitim amaçlı IR olan Bril kullanılıyor
  • Gerçek Cornell dersiyle farklı olarak ödev teslim tarihleri göz ardı edilebiliyor, ancak Zulip tartışmalarına katılım mümkün değil; dönem sonu projesi yerine kendi kendine sürüme özel son bir ödev veriliyor
  • Ders materyalleri GitHub'da açık kaynak olarak yayımlandığı için sorunlar bildirilebiliyor; tamamlandıktan sonra geri bildirim formu üzerinden iyileştirme önerileri gönderilebiliyor

Ders yapısı ve katılım biçimi

  • CS 6120, Cornell CS bünyesinde Adrian Sampson tarafından hazırlanmış bir programlama dili gerçekleştirim dersi
  • Genel amaçlı derleyicilerin temel konularını ve araştırma niteliğindeki başlıkları birlikte ele alıyor
    • Ara gösterimler
    • Veri akışı
    • Klasik optimizasyonlar
    • Paralelleştirme
    • JIT derleme
    • Çöp toplama
  • Öğrenme süreci, makale okumaları ve açık kaynak hackleme ödevleriyle devam ediyor
    • LLVM kullanılıyor
    • Ders için eğitim amaçlı IR olan Bril kullanılıyor
  • Kendi kendine ilerlenen müfredat, video izleme ile makale okumayı harmanlayan doğrusal bir takvim olarak düzenlenmiş
  • Bazı derslerde uygulama ödevleri bulunuyor ve açık uçlu kod yazımıyla soyut kavramların öğrenilmesi hedefleniyor
  • Gerçek CS 6120 ile kendi kendine sürüm arasında farklar var
    • Ödev teslim tarihleri göz ardı edilebiliyor
    • Zulip tartışma başlıklarına katılım mümkün değil
    • Gerçek derste bir dönem sonu projesi var
    • Kendi kendine sürümün dönem sonu ödevi “derleyici büyüsüyle dünyayı değiştirmek”
  • Ders, GitHub'da açık kaynak olarak yayımlandığı için sorun varsa bug bildirimi yapılabiliyor
  • Tamamlandıktan sonra geri bildirim formu doldurulabiliyor

Dersler ve okuma materyali akışı

1 yorum

 
GN⁺ 8 시간 전
Hacker News görüşleri
  • Dinamik derleyici kısmı neredeyse tamamen trace compilation ile ilgili görünüyor. Genel olarak trace compilation çıkmaz bir yoldu ve defalarca terk edildi.
    Bence burada daha önemli kavramlar type feedback, spekülatif yürütme ve deoptimization, hızlı derleyiciler ve katmanlı yapı.
    Dersin geneli iyi görünüyor ve bu kadar çok materyalin çevrimiçi yayımlanmış olması da harika.

    • Tarihsel olarak tracing'in bir örgütleyici ilke olarak pratik olmadığı ortaya çıktı, ama yine de öğrenildiğinde bakış açısını genişleten bir kavram olduğunu düşünüyorum.
      Dediğin gibi, sektörde gerçekte iyi çalışan şeyler hakkında daha fazla bağlam vermek isterim.
    • PyTorch'un torch.compile çalışması üzerinde çalışıyorum; bu da bir tracing compiler.
      Ancak bu alan oldukça dar olabilir ve geleneksel derleyicilerden de çok farklı, bu yüzden yaptığımız bazı işlere bakınca epey rahatsız olabilirsiniz.
    • JAX de bir tracing compiler.
      Elbette problem alanının TraceMonkey veya LuaJIT'ten son derece farklı olduğunun farkındayım.
    • TraceMonkey makalesi doktora yeterlilik sınavı okuma listesinde vardı ve zamanlama olarak bu sınav dönemi tam da TraceMonkey'in SpiderMonkey'den çıkarıldığı döneme denk gelmişti.
      O sırada geliştiricilerden biriyle, sanırım Jason Orendorff'tu, konuşmuştum; tracing'in pek iyi işlemediğini, ancak sınırlı koşullarda mümkün olabileceğini düşünüyordu.
      Yalnız bu koşulların ne olduğunu tamamen unuttum.
    • Trace compilation çıkmaz bir yol değil.
      LuaJIT büyük programlarda da, yüz milyonlarca sunucu ve cihazda da iyi çalışıyor.
      Akademisyenlerin bile bu klişe lafı tekrar edip durması gerçekten üzücü. İnsan bilmediği şeyden korkar sözü aklıma geliyor.
  • Önceki ilgili yazılar:
    CS 6120: Advanced Compilers: The Self-Guided Online Course - https://news.ycombinator.com/item?id=39577878 - Mart 2024, 102 yorum
    Advanced Compilers: Self-Guided Online Course - https://news.ycombinator.com/item?id=35130975 - Mart 2023, 82 yorum
    Advanced Compilers: Self-Guided Online Course - https://news.ycombinator.com/item?id=25386756 - Aralık 2020, 232 yorum

  • Bu dersin neden ileri seviye olduğu biraz kafamı karıştırıyor. Dead code elimination, data flow, dominator analysis, SSA form gibi konuların çoğu ilk derleyici dersinde yer alacakmış gibi görünüyor.

    • Ders numarası oldukça düzenli, bu yüzden “giriş düzeyi derleyiciler” dersinin ne olduğuna bakabiliyoruz: https://www.cs.cornell.edu/courses/cs4120/2026sp/?schedule
      Kısacası derleyiciler fiilen iki derse bölünüyor ve ilk ders bir derleyici yapmak için gerekli asgari unsurları, yani lexical analysis, parsing, code generation ve register allocation konularını ele alıyor.
      İkinci ders ise optimizasyon yapan derleyicilerin nasıl oluşturulacağıyla ilgili.
    • Bununla ilgili çok fazla materyal okudum ama böyle içerikler çoğunda yoktu.
      Gerçekte ister derleyici ister yorumlayıcı olsun, backend neredeyse her zaman “okuyucuya bırakılan alıştırma” olarak kalıyor.
      Closure oluşturma, environment takibi, pattern matching, bellek gösterimi gibi daha keşfedilecek o kadar çok şey var ki bunu hayal etmek bile zor.
      İlginç olan her şeyi kendiniz araştırmak zorundasınız.
      Not: Bu sadece bir yılın materyali: https://gist.githubusercontent.com/mamcx/e1743571b9a1ea163a7...
    • Uzman olmayanlar genelde parsing ile başlıyor ve backend tarafını hiç görmüyor diye düşünüyorum.
      Yorumlayıcılar ve derleyiciler üzerine iki kitap okudum, ama backend çok işlenmiyordu.
      Belki de bu daha çok backend'e giriş dersi gibidir.
    • O zaman neyin ileri seviye olduğunu merak ediyorum. Dead code elimination, data flow, SSA, instruction selection ve register allocation düzgünce ele alınıyorsa, bu fiilen backend'in %98'i demektir.
  • Bunun gibi başka kendi kendine yürütülen, çevrimiçi, üniversite düzeyinde bilgisayar bilimi dersleri var mı?

    • Onlarcası var. “mooc” diye aratmanız yeterli.
      Bazı hocalar “mooc” çerçevesinin dışında da derslerini ve ödevlerini yayımlıyor.
      Yorumda soru sorduğumda yanıt veren hocalar da olmuştu. İnternet hâlâ zaman zaman gerçekten harika olabiliyor.
  • Nora Sandler'ın Writing a C compiler kitabıyla karşılaştırıldığında, okurun elde edeceği kazanım nasıl farklı olur?

    • O kitap, lisans düzeyindeki derleyici dersinde edinilecek içeriğe daha yakın; bu ders ise ondan daha ileri konuları işliyor.
      Yeni başlayanlar ya da hobi olarak kurcalayanlar için önce o kitap veya benzer seviyedeki materyallerle başlamak, ardından bu dersi deneyip eksikleri tamamlamak daha iyi olur.
  • İleri seviyeye geçmeden önce izlenebilecek temel bir derleyici odaklı kendi kendine ilerlenen ders var mı?

  • Rust derleyicisiyle ilgili bir podcast dinlemiştim; sistemi çökertme potansiyeli olan kodu belirlemek için bir noktada makine öğrenimi algoritması kullanıldığını söylemiş gibiydiler

    • Böyle bir şey duyduğumu hatırlamıyorum ve neredeyse kesin olarak yanlış olduğundan eminim. Tabii “makine öğrenimi” çok geniş bir ifade
      Bir kaynak var mı?
  • alexia massalin'in bugünlerde microunity patent telifleri almak dışında ne yaptığını gerçekten merak ediyorum