कंपाइलर और भाषा डिज़ाइन का परिचय पाठ्यपुस्तक (2021)
(dthain.github.io)- 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 टिप्पणियां
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 के आसपास एक संकीर्ण दायरे में ही घूमता रहता है
किताब के description में भी लिखा है कि यह “एक semester की introductory book है, जिससे reader C जैसी language स्वीकार करने वाला simple compiler बना सके”
preface के मुताबिक क्या Dragon Book advanced graduate level की है?
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 करना मुश्किल है
उसमें लिखा है: “इस 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 की जरूरत नहीं पड़ती
assembler लिखकर देखना compiler structure से परिचित होने का अच्छा तरीका है। क्योंकि इसमें optimization, types, या high-level language को complex बनाने वाली कई features की चिंता नहीं करनी पड़ती
अपनी बनाई 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” के ज्यादा करीब लगता है
Python या Ruby, या और सरल Pascal compiler जैसी चीजें समझने के लिए यह सही level है
compiler और language design इस industry जितने ही पुराने fields हैं, इसलिए एक course में समाने के लिए knowledge बहुत ज्यादा है। फिर भी यह lecture अच्छा है, और Dragon Book-based समान lectures से बेहतर लगता है
AI topics और noise के बीच ऐसा compiler article देखकर अच्छा लगा
सही और high-quality AI use भी valuable है, और non-AI work भी valuable है। लोगों के काम को यूं ही नीचा दिखाने के बजाय AI-related output के लिए उचित standards होना बेहतर होगा
अच्छा article है
शानदार examples के साथ पहले सीखी हुई knowledge को फिर से sharp और clear कर देने वाली बात impress करती है