2 puan yazan GN⁺ 2026-01-17 | 1 yorum | WhatsApp'ta paylaş
  • Programlama dili tasarımı ve gerçekleştirimini doğrudan öğrenirken, eksiksiz bir betik dilinin nasıl oluşturulduğunu ele alan bir kitap
  • Parsing, semantik, bytecode, çöp toplayıcı gibi yüksek seviyeli kavramlardan düşük seviyeli gerçekleştirim ayrıntılarına kadar adım adım açıklar
  • main() fonksiyonundan başlayıp dinamik tipleme, lexical scope, birinci sınıf fonksiyonlar, sınıflar ve kalıtım içeren bir dili bizzat yazdırır
  • Basılı kitap, eBook, PDF ve web sürümü olmak üzere 4 farklı formatta sunulur; web üzerinde tüm içerik ücretsiz olarak okunabilir
  • Google'da Dart dili geliştiricisi olan Robert Nystrom tarafından yazılmış olup, dil geliştirmeyle ilgilenen geliştiriciler için önemli ve pratik bir öğrenme kaynağıdır

Kitap Özeti

  • Crafting Interpreters, tam işlevli ve verimli bir betik dilini bizzat nasıl gerçekleştireceğinizi anlatan bir kitap
    • Parsing ve semantik gibi yüksek seviyeli kavramları ve bytecode gösterimi, çöp toplayıcı gibi düşük seviyeli gerçekleştirim ayrıntılarını birlikte kapsar
    • Okurun kodu doğrudan yazarak dilin yapısını tamamen anlayabilmesi için kurgulanmıştır
  • Ortaya çıkan dil; zengin sözdizimi, dinamik tipleme, çöp toplayıcı, lexical scope, birinci sınıf fonksiyonlar, closure'lar, sınıflar ve kalıtım destekler
    • Binlerce satırlık özlü ve hızlı koddan oluşur ve tüm kod okur tarafından doğrudan yazılır

Sunulan Formatlar

  • Kitap Print, eBook, PDF, Web olmak üzere dört formatta sunulur
    • Print: 640 sayfa, yüksek çözünürlüklü elde çizilmiş illüstrasyonlar ve özenli tipografi içerir
    • eBook: CSS cihaz ekran boyutuna göre uyarlanır ve renkli sözdizimi vurgulama ile hiperlink desteği sunar
    • PDF: Basılı sürümün mizanpajını ve illüstrasyonlarını aynen korurken taşınabilirliği artırır
    • Web: Duyarlı tasarımla tüm bölümleri ve illüstrasyonları içerir; tamamı ücretsiz okunabilir

Yazar Hakkında

  • Yazar Robert Nystrom, Google'da Dart dili geliştirme çalışmalarına katılmaktadır
    • Daha önce Electronic Arts'ta 8 yıl boyunca oyun geliştirme üzerine çalışmıştır
    • Çok satan Game Programming Patterns kitabının yazarıdır; bu kitap da ücretsiz olarak yayımlanmıştır
  • Dil geliştirmeye duyduğu ilgiyle çeşitli hobi dil projeleri (Wren, Magpie, Finch, Vigil) geliştirmiştir
  • Kişisel blogu ve Twitter(@munificentbob) üzerinden faaliyet gösterir, ayrıca kitapla ilgili bir mailing list yürütür

Erişim ve Satın Alma Yolları

  • Basılı sürüm Amazon, Barnes & Noble, Book Depository gibi büyük kitapçılardan satın alınabilir
  • eBook sürümü Kindle, Apple Books, Google Play Books, Smashwords üzerinden sunulur
  • PDF sürümü Payhip üzerinden satın alınabilir; ayrıca ücretsiz örnek PDF indirilebilir
  • Web sürümü resmî sitede tamamı ücretsiz olarak okunabilir

1 yorum

 
GN⁺ 2026-01-17
Hacker News yorumları
  • Bu kitabı okurken expression problem ve buna çözüm olarak visitor pattern konusunu çok daha iyi anladım
    Bu sayede visitor gerektirmeyen Class Hierarchy Inheritance kavramını da tamamen kavradım
    Newspeak dilinde sınıf içinde iç içe sınıflar bulunabiliyor; dolayısıyla kalıtım sırasında bu iç sınıflar da birlikte miras alınıyor
    Bu özelliğin Free Object Algebras'ı mümkün kıldığını bu blog yazısı ele alıyor
    Ayrıca bkz: Expression Problem yazısı, Newspeak resmi sitesi
  • Bu harika kitap hakkında iki kez çok popüler tartışma olmuş
    2020'de 777 puan, 2024'te ise 607 puan almış
  • Bu kitap, yeni bir dil öğrenirken gerçekten çok iyi bir kaynaktı
    Çünkü çeşitli dil özelliklerini ve kalıpları bizzat uygulayarak öğreniyorsunuz
    Java'da olmayan özelliklere sahip dillerde benzer kalıpları uygulamak zor olsa da, mücadelenin kendisi eğlenceliydi
  • Kış tatili boyunca bu kitabı baştan sona okudum
    Yazarın rahat üslubunu ve aralara serpiştirilen mizahı gerçekten çok beğendim
    “Lox'a type checker eklemek” gibi bir devam kitabı gelsin isterim
  • Gerçekten çok iyi bir kitap
    Başta basılı sürümünü almıştım ama fazla büyük ve ağır olduğu için sonunda e-kitap sürümünü de satın aldım
    Not almak ve arama yapmak çok daha kolay
    Yine de okurken bazen insan kendini dağlarda yolunu kaybetmiş gibi hissedebiliyor :)
    Yazarın bir diğer kitabı Game Programming Patterns'ı da öneririm
    • Ben kitabın cildini spiral cilt yaptırarak da kullandım
      Matbaada bunu kolayca yaptırabiliyorsunuz ve masada kullanması çok daha rahat oluyor
      Ama Crafting Interpreters asla atamayacağım bir kitap olduğu için onu olduğu gibi bıraktım
  • Bu kitabın hediye etmek için basılı kopyasını tam üç kez satın aldım
    O kadar iyi bir kitap
    • Bir kopya aldığın için teşekkürler :)
  • Derleyici tasarımını öğrenmek için en iyi kaynaklardan biri
    Üstelik web sürümünün ücretsiz olması gerçekten çok cömertçe
    • Yalnız kitap adında doğrudan ‘compiler’ kelimesi geçmiyor
  • Bu kitabı gerçekten çok seviyorum
    Ama Java sürümünün eski kalmış olması üzücü
    Sonradan eklenen sealed classes veya exhaustive switch gibi özellikleri yansıtan gözden geçirilmiş bir baskı olsa keşke
    • Bunu güncel Java'ya kendiniz yükseltmeyi denemek de iyi bir alıştırma olabilir
      Böylece yazarın yaptığı geçici kod üretim aracına da gerek kalmaz
  • C++'taki typedef benzeri bağlama bağlı sözdizimini nasıl parse edeceğimi merak etmiştim
    PEG tabanlı parser'larda context stack ekleyen biraz hack'li yaklaşımlar var ama sözdizimi geçişi problemi hâlâ zor
    persistent data structure veya transactional data structure yardımcı olabilir gibi geliyor ama henüz net bir biçimselleştirme bulamadım
    • Lexer hack'e bakabilirsiniz
      Yöntem, parser'ın lexer'a durum aktarması ve type name kümesini lexer'ın bilmesini sağlamasıdır
    • Bir başka yöntem de functional parser kullanmaktır
      Örneğin Parsec gibi kütüphanelerde do gösterimiyle her aşamanın sonucu sonraki parser'larla paylaşılabilir
    • Sorunun nedeni C/C++'ın dil bilgisi tasarımının çok kötü olması
      Neyse ki Rust ve Go bu tür sorunlardan kaçındı; dikkatli tasarımla bunları yeterince önlemek mümkün
  • Interpreter yazmaya başlamak isteyenler için birkaç kaynak paylaşayım
    shi projesine ve C tarafıyla ilgileniyorsanız hacktical-c'ye bakabilirsiniz