- 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
Hacker News yorumları
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
2020'de 777 puan, 2024'te ise 607 puan almış
Çü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
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
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
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
O kadar iyi bir kitap
Üstelik web sürümünün ücretsiz olması gerçekten çok cömertçe
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
Böylece yazarın yaptığı geçici kod üretim aracına da gerek kalmaz
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
Yöntem, parser'ın lexer'a durum aktarması ve type name kümesini lexer'ın bilmesini sağlamasıdır
Örneğin Parsec gibi kütüphanelerde
dogösterimiyle her aşamanın sonucu sonraki parser'larla paylaşılabilirNeyse ki Rust ve Go bu tür sorunlardan kaçındı; dikkatli tasarımla bunları yeterince önlemek mümkün
shi projesine ve C tarafıyla ilgileniyorsanız hacktical-c'ye bakabilirsiniz