2 पॉइंट द्वारा GN⁺ 5 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Notre Dame CSE 40243 कंपाइलर कोर्स के लिए विकसित की गई मुफ़्त ऑनलाइन पाठ्यपुस्तक, जिसमें पूरा PDF और अध्याय-वार PDF सीधे डाउनलोड करके पढ़ा जा सकता है
  • एक सेमेस्टर के दायरे में कंपाइलर निर्माण की पूरी प्रक्रिया को फ़ॉलो करते हुए, उच्च-स्तरीय भाषा प्रोग्राम को निम्न-स्तरीय भाषा प्रोग्राम में अनुवाद करने की प्रक्रिया समझाई गई है
  • शिक्षार्थी का लक्ष्य C जैसी भाषा को इनपुट के रूप में लेकर उसे X86 या ARM assembly में बदलने वाला एक सरल कंपाइलर बनाना है
  • यह उन अंडरग्रेजुएट स्तर के छात्रों के लिए सबसे उपयुक्त है जिनके पास C प्रोग्रामिंग का अनुभव है और जिन्होंने data structures तथा computer architecture पढ़ा है
  • PDF को व्यक्तिगत और शैक्षणिक उपयोग के लिए इस्तेमाल किया जा सकता है, लेकिन व्यावसायिक प्रिंटिंग और वितरण निषिद्ध है, और नवीनतम सामग्री compilerbook.org पर देखनी चाहिए

Notre Dame कंपाइलर कोर्स पर आधारित पाठ्यपुस्तक

  • Introduction to Compilers and Language Design Douglas Thain द्वारा University of Notre Dame के CSE 40243 कंपाइलर कोर्स के लिए विकसित की गई एक मुफ़्त ऑनलाइन पाठ्यपुस्तक है
  • इसका दूसरा संस्करण 2020 का है, और संशोधन तिथि 15 जनवरी 2021 दी गई है
  • जो पाठक छपी हुई पुस्तक चाहते हैं, वे hardcover या paperback खरीद सकते हैं
  • यह पाठ्यपुस्तक कंपाइलर को शुरू से बनाने की प्रक्रिया के माध्यम से कंप्यूटर साइंस के सैद्धांतिक और व्यावहारिक दोनों पहलुओं को कवर करती है
  • अंतिम सीखने का लक्ष्य C जैसी भाषा को इनपुट के रूप में लेकर उसे X86 या ARM assembly में अनुवाद करने वाला एक सरल कंपाइलर बनाना है

PDF, उदाहरण कोड, और उपयोग की शर्तें

  • पूरी पाठ्यपुस्तक का PDF और अध्याय-वार PDF उपलब्ध हैं
  • परिशिष्ट में Sample Course Project, The B-Minor Language, Coding Conventions शामिल हैं
  • compilerbook-examples GitHub रिपॉज़िटरी में पुस्तक के अनुरूप प्रायोगिक सामग्री उपलब्ध है
    • कई scanners और parsers
    • प्रोजेक्ट कंपाइलर के लिए starter code structure
    • scanner, parser, type checker, और code generator के प्रत्येक चरण के sample test cases
  • PDF को व्यक्तिगत और शैक्षणिक उपयोग के लिए डाउनलोड, प्रिंट और इस्तेमाल किया जा सकता है
  • व्यावसायिक प्रिंटिंग या वितरण निषिद्ध है, और PDF को लोकल कॉपी करके बाँटने के बजाय छात्रों को compilerbook.org पेज की ओर मार्गदर्शित करना चाहिए
  • टाइपो या अन्य त्रुटियाँ Compiler Book Errata शीर्षक के साथ dthain@nd.edu पर ईमेल करके भेजी जा सकती हैं

1 टिप्पणियां

 
GN⁺ 5 시간 전
Hacker News की राय
  • मैंने कॉलेज में Dr. Thain की compiler class ली थी और वह वाकई शानदार थी
    वे बेहतरीन instructor थे, और class project की वजह से मैं step-by-step C-style compiler खुद बना पाया। यहां के example projects भी लगभग उसी project जैसे लगते हैं जो हमने तब किए थे, और मैं इन्हें अंत तक follow करने की जोरदार सलाह दूंगा

  • अभी पता नहीं यह किस course में cover हुआ है, लेकिन C4(https://news.ycombinator.com/item?id=8558822) और C4x86(https://news.ycombinator.com/item?id=8746054) एक semester के learning topic के लिए अच्छे लगते हैं
    यह C के एक बहुत छोटे subset का self-compiling compiler है, इसलिए features बढ़ाने वाले अतिरिक्त assignments के base के तौर पर भी उपयुक्त लगता है

  • संबंधित पोस्ट: Introduction to Compilers and Language Design (2021) - https://news.ycombinator.com/item?id=31388741 - मई 2022, 68 comments
    Introduction to Compilers and Language Design - https://news.ycombinator.com/item?id=19728749 - अप्रैल 2019, 1 comment

  • ऐसा लगता है कि यह C और उसकी अजीब conventions के आसपास एक संकीर्ण दायरे में ही घूमता रहता है

    • शायद यह जानबूझकर बनाया गया structure है
      किताब के description में भी लिखा है कि यह “एक semester की introductory book है, जिससे reader C जैसी language स्वीकार करने वाला simple compiler बना सके”
  • preface के मुताबिक क्या Dragon Book advanced graduate level की है?

    • Dragon Book थोड़ी अजीब है
      classic तो है, लेकिन computation theory की basics को ही कुछ हद तक cover करती है, और बाकी compiler content को जल्दी-जल्दी skim करने जैसी है
      modern graduate-level compiler topics को ठीक से cover नहीं करती, और practical book भी नहीं है। practice और theory के balance के लिहाज से Tiger Book कहीं बेहतर introductory book है
      मुझे लगता है कि सचमुच advanced compiler topics को किसी एक single book में अच्छे से cover करना मुश्किल है
    • 2006 edition के preface को देखें तो authors इस book को कुल मिलाकर graduate-level textbook मानते दिखते हैं
      उसमें लिखा है: “इस book का पूरा या अधिकांश हिस्सा cover करने के लिए कम से कम दो quarters या दो semesters चाहिए। आमतौर पर पहला हिस्सा undergraduate course में, और code optimization पर जोर देने वाला दूसरा हिस्सा graduate या intermediate-level second course में cover किया जाता है”
  • जब मैं language design करने और compiler बनाने वालों को देखता हूं तो कभी-कभी सच में लगता है कि वे कमाल के हैं
    जिज्ञासा में मैंने खुद language बनाने की कोशिश की, लेकिन बहुत मुश्किल लगा, इसलिए एक simple C backend पर compromise कर लिया। LLVM में contribute करने वाले लोग शायद assembly generation तक सब जानते होंगे, और यह वाकई हैरान करने वाला है

    • जरूरी नहीं
      मैं web developer था और फिर LLVM पर आधारित compiler के काम में आया; LLVM खुद इतना बड़ा है कि उसके सभी areas और mechanisms सीखना आसान नहीं है
      लेकिन बहुत complex न होने वाले passes लिखने, bug fixes और regression fixes के लिए बेहद खास knowledge की जरूरत नहीं पड़ती
    • assembly generation अपने-आप में असल में काफी straightforward है; मुश्किल हिस्सा सब कुछ optimize करना है
      assembler लिखकर देखना compiler structure से परिचित होने का अच्छा तरीका है। क्योंकि इसमें optimization, types, या high-level language को complex बनाने वाली कई features की चिंता नहीं करनी पड़ती
    • नई language सीखते समय मुझे सबसे अच्छा लगता है कि जल्दी से lexer/parser और REPL बना लिया जाए
      अपनी बनाई language grammar का frontend और एक छोटा evaluation loop implement कर लेने भर से real language के कई हिस्सों को देखा जा सकता है। real-world problem solving में अटकना नहीं पड़ता, इसलिए सीखने और सिखाने के लिए भी अच्छा है
      इसलिए simple C backend पर compromise किया, तो इसमें शर्मिंदा होने की बिल्कुल जरूरत नहीं है
  • केवल table of contents देखने पर भी language design के मुख्य topics लगभग दिखाई नहीं देते
    title की तुलना में यह बस “compiler introduction” के ज्यादा करीब लगता है

    • undergraduate level पर language कैसे काम करती है, उसके core topics को follow करने वाला structure लगता है
      Python या Ruby, या और सरल Pascal compiler जैसी चीजें समझने के लिए यह सही level है
      compiler और language design इस industry जितने ही पुराने fields हैं, इसलिए एक course में समाने के लिए knowledge बहुत ज्यादा है। फिर भी यह lecture अच्छा है, और Dragon Book-based समान lectures से बेहतर लगता है
    • programming language design सीखने के लिए कौन-सी books recommend करेंगे? जानना चाहूंगा कि कौन-से topics छूटे हैं
  • AI topics और noise के बीच ऐसा compiler article देखकर अच्छा लगा

    • अंधाधुंध AI नफरत की अजीब बात यह है कि बिना evidence किसी भी post पर AI garbage का label लगा दें, तो anti-AI camp भी बिना आधार के उससे नफरत करता है
      सही और high-quality AI use भी valuable है, और non-AI work भी valuable है। लोगों के काम को यूं ही नीचा दिखाने के बजाय AI-related output के लिए उचित standards होना बेहतर होगा
  • अच्छा article है
    शानदार examples के साथ पहले सीखी हुई knowledge को फिर से sharp और clear कर देने वाली बात impress करती है