2 पॉइंट द्वारा GN⁺ 2026-01-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • प्रोग्रामिंग भाषा डिज़ाइन और इम्प्लीमेंटेशन को सीधे सीखते हुए, एक पूरी स्क्रिप्टिंग भाषा बनाने की प्रक्रिया पर आधारित किताब
  • पार्सिंग, सेमांटिक्स, बाइटकोड, गार्बेज कलेक्शन जैसे हाई-लेवल कॉन्सेप्ट्स से लेकर लो-लेवल इम्प्लीमेंटेशन तक चरणबद्ध व्याख्या
  • main() फ़ंक्शन से शुरू करके डायनेमिक टाइपिंग, लेक्सिकल स्कोप, फर्स्ट-क्लास फ़ंक्शंस, क्लासेस, इनहेरिटेंस शामिल करने वाली भाषा को स्वयं लिखना
  • प्रिंट, eBook, PDF, वेब संस्करण सहित 4 फ़ॉर्मैट्स में उपलब्ध, और वेब पर पूरा कंटेंट मुफ्त में पढ़ा जा सकता है
  • Google के Dart भाषा डेवलपर Robert Nystrom द्वारा लिखित, भाषा निर्माण में रुचि रखने वाले डेवलपर्स के लिए एक महत्वपूर्ण व्यावहारिक शिक्षण संसाधन

किताब का परिचय

  • Crafting Interpreters एक पूर्ण-विशेषताओं वाली कुशल स्क्रिप्टिंग भाषा को स्वयं इम्प्लीमेंट करने का तरीका बताने वाली किताब है
    • इसमें पार्सिंग और सेमांटिक्स जैसे हाई-लेवल कॉन्सेप्ट्स के साथ बाइटकोड रिप्रेज़ेंटेशन और गार्बेज कलेक्शन जैसी लो-लेवल इम्प्लीमेंटेशन डिटेल्स भी शामिल हैं
    • इसे इस तरह बनाया गया है कि पाठक स्वयं कोड लिखकर भाषा की संरचना को पूरी तरह समझ सके
  • अंत में बनने वाली भाषा समृद्ध ग्रामर, डायनेमिक टाइपिंग, गार्बेज कलेक्शन, लेक्सिकल स्कोप, फर्स्ट-क्लास फ़ंक्शंस, क्लोज़र्स, क्लासेस, इनहेरिटेंस को सपोर्ट करती है
    • यह संक्षिप्त और तेज़ कोड की हज़ारों लाइनों से बनी है, और सारा कोड पाठक खुद लिखता है

उपलब्ध फ़ॉर्मैट्स

  • यह किताब Print, eBook, PDF, Web इन चार फ़ॉर्मैट्स में उपलब्ध है
    • Print: 640 पेज, हाई-रेज़ोल्यूशन हाथ से बने इलस्ट्रेशन और बारीक टाइपोग्राफी सहित
    • eBook: CSS डिवाइस की स्क्रीन साइज़ के अनुसार एडजस्ट होती है, और कलर सिंटैक्स हाइलाइटिंग व हाइपरलिंक्स सपोर्ट करती है
    • PDF: प्रिंट संस्करण की लेआउट और इलस्ट्रेशन को उसी रूप में दोहराते हुए बेहतर पोर्टेबिलिटी देता है
    • Web: रिस्पॉन्सिव डिज़ाइन के साथ सभी अध्याय और इलस्ट्रेशन शामिल, पूरा कंटेंट मुफ्त में उपलब्ध

लेखक परिचय

  • लेखक Robert Nystrom Google में Dart भाषा विकास पर काम कर रहे हैं
    • इससे पहले Electronic Arts में 8 साल तक गेम डेवलपमेंट किया
    • वे बेस्टसेलर Game Programming Patterns के लेखक हैं, और वह किताब भी मुफ्त में उपलब्ध है
  • भाषा निर्माण के प्रति गहरी रुचि के चलते उन्होंने कई हॉबी लैंग्वेज प्रोजेक्ट्स (Wren, Magpie, Finch, Vigil) विकसित किए
  • वे अपने व्यक्तिगत ब्लॉग और ट्विटर(@munificentbob) के माध्यम से सक्रिय हैं, और अपनी किताब से जुड़ी मेलिंग लिस्ट भी चलाते हैं

पहुँच और खरीदने के विकल्प

  • प्रिंट संस्करण Amazon, Barnes & Noble, Book Depository जैसे प्रमुख बुकस्टोर्स से खरीदा जा सकता है
  • eBook Kindle, Apple Books, Google Play Books, Smashwords आदि पर उपलब्ध है
  • PDF संस्करण Payhip पर खरीदा जा सकता है, और मुफ्त सैंपल PDF डाउनलोड भी उपलब्ध है
  • वेब संस्करण आधिकारिक साइट पर पूरा मुफ्त पढ़ने के लिए उपलब्ध है

1 टिप्पणियां

 
GN⁺ 2026-01-17
Hacker News की राय
  • इस किताब को पढ़ते हुए expression problem और उसके समाधान के रूप में visitor pattern को मैं और बेहतर समझ पाया
    इसकी बदौलत मैंने class hierarchy inheritance की वह अवधारणा भी पूरी तरह समझ ली, जिसमें visitor की ज़रूरत नहीं पड़ती
    Newspeak भाषा में class के अंदर nested classes रखी जा सकती हैं, इसलिए inheritance के समय वे nested classes भी साथ में inherit हो जाती हैं
    यह सुविधा Free Object Algebras को संभव बनाती है, इस पर इस ब्लॉग पोस्ट में चर्चा की गई है
    संदर्भ: Expression Problem लेख, Newspeak आधिकारिक साइट
  • इस बेहतरीन किताब पर दो बार बहुत लोकप्रिय चर्चाएँ हुई थीं
    2020 में इसे 777 points मिले थे, और 2024 में 607 points
  • नई भाषा सीखते समय यह किताब सचमुच बहुत अच्छा संसाधन रही
    क्योंकि इसमें अलग-अलग language features और patterns को खुद implement करते हुए सीखना पड़ता है
    जिन भाषाओं में Java जैसी सुविधाएँ नहीं थीं, उनमें मिलते-जुलते patterns लागू करना कठिन था, लेकिन वही चुनौती अपने आप में मज़ेदार थी
  • सर्दियों की छुट्टियों में मैंने यह किताब पूरी पढ़ ली
    लेखक की casual writing style और जगह-जगह का humor मुझे बहुत पसंद आया
    उम्मीद है कि “Lox में type checker जोड़ना” जैसी कोई अगली कड़ी आए
  • यह सचमुच बहुत अच्छी किताब है
    मैंने पहले इसका paperback खरीदा था, लेकिन वह इतना बड़ा और भारी था कि आखिरकार ebook फिर से खरीदनी पड़ी
    notes बनाना और search करना कहीं ज़्यादा सुविधाजनक है
    फिर भी इसे पढ़ते-पढ़ते कभी-कभी ऐसा लगता है जैसे पहाड़ों में रास्ता भटक गए हों :)
    लेखक की दूसरी किताब Game Programming Patterns भी सुझाऊँगा
    • मैंने तो किताब की binding को ring binding में बदलकर भी इस्तेमाल किया है
      किसी print shop में यह आसानी से हो जाता है, और मेज़ पर संभालना कहीं आसान हो जाता है
      लेकिन Crafting Interpreters ऐसी किताब है जिसे मैं कभी फेंक नहीं सकता, इसलिए उसे वैसे ही रखा है
  • मैंने इस किताब की print copies as gifts तीन बार खरीदी हैं
    इतनी शानदार किताब है यह
    • कॉपी दिलाने के लिए धन्यवाद कहना चाहता हूँ :)
  • compiler design सीखने के लिए यह सबसे बेहतरीन संसाधनों में से एक है
    ऊपर से इसका web version मुफ़्त होना बहुत उदार बात है
    • हालांकि किताब के शीर्षक में सीधे ‘compiler’ शब्द नहीं आता
  • मुझे यह किताब बहुत पसंद है
    बस अफ़सोस है कि इसका Java version पुराना हो चुका है
    अच्छा होता अगर sealed classes या exhaustive switch जैसी हाल की सुविधाओं को शामिल करते हुए इसका revised edition आता
    • इसे खुद latest Java पर upgrade करके देखना भी एक अच्छा practice exercise है
      ऐसा करने पर लेखक का बनाया हुआ अस्थायी code generation tool भी ज़रूरी नहीं रहेगा
  • मुझे यह जानने की जिज्ञासा थी कि C++ के typedef जैसी context-dependent syntax को कैसे parse किया जाता है
    PEG-based parser में context stack जोड़ने जैसा एक hacky तरीका है, लेकिन syntax switching की समस्या फिर भी कठिन बनी रहती है
    लगता है persistent data structure या transactional data structure मदद कर सकते हैं, लेकिन अभी तक इसका कोई स्पष्ट formalization नहीं मिला
    • Lexer hack देखना उपयोगी होगा
      इसमें parser lexer को state देता है, ताकि lexer type names के set को जान सके
    • एक और तरीका functional parser इस्तेमाल करना है
      उदाहरण के लिए Parsec जैसी लाइब्रेरी में ‘do’ notation का उपयोग करके हर चरण का परिणाम आगे आने वाले parsers के साथ साझा किया जा सकता है
    • C/C++ की grammar design बहुत खराब है, इसलिए ऐसी समस्याएँ आती हैं
      अच्छी बात यह है कि Rust या Go ने इन समस्याओं से बचाव किया है, और सावधानीपूर्वक design से इन्हें पूरी तरह टाला जा सकता है
  • interpreter शुरू करने वालों के लिए कुछ संसाधन साझा कर रहा हूँ
    shi project और, अगर C language की तरफ़ रुचि हो, तो hacktical-c देखना अच्छा रहेगा