• ज़्यादातर compiler textbooks थ्योरी-केंद्रित और बहुत विशाल होते हैं, इसलिए शुरुआती लोगों के लिए वास्तव में काम करने वाला compiler implement करना कठिन हो जाता है
  • इस समस्या के व्यावहारिक समाधान के रूप में Jack Crenshaw की “Let’s Build a Compiler!” सीरीज़ का परिचय दिया गया है, जो single-pass संरचना वाले सरल Pascal compiler को कवर करती है
  • यह tutorial parsing और code generation के संयोजन, न्यूनतम optimization, और C·Forth versions के माध्यम से प्रयोग-आधारित सीखने का समर्थन करता है
  • दूसरा स्रोत, “A Nanopass Framework for Compiler Education” पेपर, कई सरल transformations(pass) से बने modular compiler architecture का प्रस्ताव रखता है
  • इन दोनों स्रोतों के माध्यम से वास्तविक implementation अनुभव हासिल करने के बाद, ज़रूरत हो तो पारंपरिक textbook (Dragon Book) देखकर आगे गहराई से पढ़ाई की जा सकती है

कंपाइलर सीखने की हक़ीक़त और दो प्रमुख पेपर

  • मौजूदा compiler books अक्सर ज़रूरत से ज़्यादा विशाल और कठिन होती हैं, इसलिए शुरुआती लोग वास्तव में काम करने वाला compiler लिखना मुश्किल पाते हैं
    • अधिकांश किताबें regular expression transformation, grammar theory जैसे बड़े विषयों को कवर करती हैं, लेकिन कोई व्यावहारिक शुरुआती बिंदु नहीं देतीं
    • इसके कारण “compiler बनाना बहुत कठिन है” जैसी गलतफहमियाँ और मिथक बन जाते हैं
  • इस सोच को तोड़ने वाले प्रतिनिधि स्रोत के रूप में Jack Crenshaw की “Let’s Build a Compiler!” सीरीज़ का परिचय दिया जाता है
    • 1988 में शुरू हुई यह tutorial Turbo Pascal स्तर के single-pass compiler को कवर करती है
    • इसकी संरचना parsing और code generation को जोड़ती है, और केवल न्यूनतम optimization करती है
    • यह मूल रूप से Pascal में लिखी गई थी, और बाद में C version तथा Forth translation भी आए
    • Forth version में भाषा की interactive विशेषताओं के कारण प्रयोग करना और समझना आसान है
  • Crenshaw सीरीज़ की एक सीमा यह है कि इसमें program की internal representation (abstract syntax tree, AST) नहीं है
    • Pascal में tree manipulation जटिल होने के कारण इसे छोड़ा गया, लेकिन Python, Ruby, Erlang, Haskell, Lisp जैसी high-level भाषाओं में इसे आसानी से implement किया जा सकता है
    • ये भाषाएँ मूल रूप से tree-structured data manipulation के लिए डिज़ाइन की गई हैं
  • दूसरे अनुशंसित स्रोत के रूप में Sarkar, Waddell, Dybvig का पेपर “A Nanopass Framework for Compiler Education”
    • इसका मुख्य विचार यह है कि “compiler, program की internal representation को चरणबद्ध तरीके से transform करने वाली प्रक्रियाओं की एक श्रृंखला है”
    • यह दर्जनों से सैकड़ों सरल transformations(pass) से बनी संरचना का प्रस्ताव रखता है
    • हर transformation को यथासंभव सरल रखा जाता है, और transformations के बीच coupling से बचा जाता है
    • framework हर pass के input और output को स्पष्ट रूप से परिभाषित करता है
    • implementation language Scheme है, और dynamic typing के आधार पर runtime validation किया जाता है
  • इन दो स्रोतों के ज़रिए वास्तविक compiler लिखने का अनुभव लेने के बाद, ज़रूरत पड़ने पर Dragon Book जैसी पारंपरिक textbook से आगे की पढ़ाई की जा सकती है
    • फिर भी, केवल इन दो स्रोतों से ही पर्याप्त व्यावहारिक compiler development experience प्राप्त किया जा सकता है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.