संकलक निर्माण के बारे में सीखने और समझने का क्या फायदा है?


10

मैं सॉफ्टवेयर इंजीनियरिंग की डिग्री के अपने 3 साल में स्नातक हूँ। इस वर्ष से, मेरे विश्वविद्यालय ने 'कंपाइलर कंस्ट्रक्शंस' नामक एक नया पाठ्यक्रम पेश किया है, जो आपको एक कंपाइलर के निर्माण के सिद्धांत की मूल बातें सिखाता है।

संकलक निर्माण के बारे में जानने के लिए सॉफ्टवेयर इंजीनियर के लिए वास्तविक विश्व लाभ क्या होगा?


2
हालाँकि मुझे कंपाइलर्स का कोर्स करने का बिल्कुल पछतावा नहीं है, लेकिन यह मेरे लिए सबसे मुश्किल था। अधिकांश CSci पाठ्यक्रमों में या तो महत्वपूर्ण सिद्धांत थे जिन्हें सीखना था, या बहुत सारी प्रोग्रामिंग, दोनों नहीं। कंपाइलर दोनों थे।
डेविड थार्नले

यह बहुत सैद्धांतिक लगता है: ocw.mit.edu/courses/electrical-engineering-and-computer-science/…
जॉब

1
मैंने इसे अपने तीसरे वर्ष में भी uni में किया था। - क्या दूसरा सबसे अच्छा मॉड्यूल था जिसे मैंने पूरे पाठ्यक्रम (एआई के बाद) में लिया था।
12

@ TWith2Sugars: आप यह क्यों कहेंगे कि CC सबसे अच्छे में से एक है?
निपुण

1
पेनी ने मेरे लिए कई बार कक्षा में गिराया - साथ ही एक आकर्षक लेक्चरर और सभ्य साथी छात्रों ने इसे कुछ ऐसा बनाया जिससे मुझे बहुत मज़ा आया। उनमें से एक क्षण मुझे याद है कि हम शुरुआत में व्याकरण के भावों को करना शुरू कर रहे थे और व्याख्याता ने कहा "यह दूसरे कार्यकाल तक समझ में नहीं आएगा" - दूसरा शब्द वह है जब हमने शेष संकलक का निर्माण शुरू किया (1'st) टर्म हमने एक पार्सर / टोकनर बनाया)। मेरे लिए यह एक महान मॉड्यूल बना।
TWith2Sugars

जवाबों:


12

संकलक निर्माण सीखने का एक व्यावहारिक पक्ष है। ऐसे कई अवसर आए हैं जहां मुझे कुछ ऐप-विशिष्ट कमांड भाषा को लागू करने के लिए पार्सर्स बनाने की आवश्यकता है। इसने मुझे एप्लिकेशन को लचीला, स्क्रिप्ट करने योग्य इंटरफेस बनाने की अनुमति दी।

यह आपको इस बात की अधिक जानकारी भी देता है कि कुछ भाषाओं को जिस तरह से डिज़ाइन किया गया है, और कोई भाषा क्यों सही नहीं है।

यह एक कठिन पाठ्यक्रम है, पाठ्यक्रम में सबसे कठिन है। मैंने इसे एक ग्रीष्मकालीन सत्र के दौरान लेने की गलती की; समर सेशन में कभी भी कंपाइलर्स का कोर्स न करें, आपका दिमाग फट जाएगा।


5
मस्तिष्क का विस्फोट करने के लिए +1। इसके अलावा, सेमेस्टर के अंत तक अपना कंपाइलर लिखना बंद न करें! मैं अनुभव से जानता हूं ...
जेरेमी हेइलर

20

ओह यह एक अच्छा है। इसे ले लो आपको इसका पछतावा नहीं होगा।

आपको प्रोग्रामिंग भाषाओं के जादू, उनकी तुलनात्मक विशेषताओं, उच्च-स्तरीय कोड को इसके निष्पादन योग्य रूप में बदलने के लिए अंतर्दृष्टि मिलती है। आप कई भाषा विशेषताओं को बेहतर ढंग से समझ पाएंगे, इसमें व्यापक दृष्टिकोण होगा कि क्या संभव है और उन चीजों को कैसे किया जाता है। आप बस इसे अलग-अलग आंखों से देखेंगे।

सीएस की मूलभूत बातों को सीखने के लिए विश्वविद्यालय में समय बिताना बुद्धिमानी है। कंक्रीट प्रोग्रामिंग भाषाएं, उपकरण और पुस्तकालय वे सभी आते हैं और जाते हैं, लेकिन नींव बनी हुई है।

इसके अलावा यदि आप पाठ्यक्रम से बचे (बशर्ते यह गंभीर होगा) तो आप प्रोग्रामिंग के लिए सही मस्तिष्क होने के लिए खुद को बधाई दे सकते हैं। इस सिद्धांत के साथ कुछ व्यावहारिक परियोजना करें, इसे अपने फिर से शुरू में उल्लेख करें और आप बहुत अच्छे नियोक्ताओं के साथ रुचि बढ़ाएंगे।


2
साथ ही यह आपको व्हाट्स की एक अच्छी / बुरी भाषा के बारे में जानकारी देता है, जो कि यहां का एक नियमित विषय है।
JBRWilkinson

8

निश्चित रूप से!

यह एक ऐसा विषय नहीं हो सकता है जिसका आप प्रतिदिन डेटाबेस वर्ग की तरह उपयोग करेंगे, समझने वाले संकलन आपको एक बेहतरीन आधार प्रदान करेंगे।

एक समान उदाहरण एक ऑपरेटिंग सिस्टम वर्ग होगा। आप एक प्रोग्रामर हो सकते हैं और यह नहीं सोच सकते हैं कि हर दिन एक ओएस कैसे काम करता है, लेकिन इसमें ग्राउंडिंग होने से आपको लंबे समय में मदद मिलेगी।


2
मेरा अंडरग्रेजुएट ओएस कोर्स पहला स्थान था जिसे मुझे वास्तव में संगामिति को समझना था। यह बेहद व्यावहारिक था। मेरी अंडरग्राउंड प्रोग्रामिंग लैंग्वेज का कोर्स सबसे अच्छा था जब हम पार्सर लिख रहे थे।
justkt

मेरे तीसरे वर्ष में किसी कारण से OS मॉड्यूल को हटा दिया गया :( वास्तव में इसे भी करना चाहते थे।
TWith2Sugars

6

हाँ! पाठ्यक्रम आपको प्रोग्रामिंग भाषा, डेटा प्रकार और कार्यों को पार्स करने और विशिष्ट सीपीयू के लिए मशीन कोड में अनुवाद करने के बारे में बहुत गहरी समझ देगा।

यह, अपने आप में, दैनिक उपयोग के अधिक व्यावहारिक नहीं हो सकता है, लेकिन यह आपको विश्वास दिलाएगा कि आप वास्तव में जानते हैं कि सामान कैसे काम करता है । यह बहुत मददगार है (यहां अनुभव के साथ बोलना) जब आपको निम्न-स्तरीय अनुकूलन करना पड़ता है और उन वास्तव में बुरा कीड़े को ढूंढना पड़ता है, जो हर किसी को स्टम्प्ड करता है।


4

आजकल डोमेन विशिष्ट भाषाओं के बारे में बहुत चर्चा है । और वे वास्तव में सभी चर्चा के लायक हैं, उनकी वास्तविक क्षमता का पता लगाया जाना बाकी है । इसलिए, संकलक निर्माण कौशल भविष्य में न केवल महत्वपूर्ण बल्कि आवश्यक हो जाएगा। मैं अपने विकास के समय का लगभग 60% ईडीएसएल संकलक को लागू करने में खर्च करता हूं, भले ही वर्तमान समस्या सीधे संकलक से संबंधित न हो।


ईडीएसएल कंपाइलर्स से आपका क्या मतलब है?
निपुण

1
जैसा कि मैं उन भाषाओं का उपयोग कर रहा हूं जो मेटाप्रोग्रामिंग का समर्थन करती हैं, प्रत्येक एम्बेडेड डोमेन विशिष्ट भाषा जिसे मैं लागू करता हूं व्यावहारिक रूप से एक कंपाइलर मैक्रो है। कुछ अपने स्वयं के प्रकार प्रणाली और कई अनुवाद पास के साथ काफी जटिल हैं, कुछ तुच्छ हैं, लेकिन सभी संकलनकर्ता हैं। जब तक वे वास्तव में आवश्यक नहीं हैं तब तक दुभाषियों का कोई मतलब नहीं है।
तर्क

1

यह समझने के लिए कि आपके द्वारा प्रोग्रामिंग कैरियर की संपूर्णता के लिए उपयोग किए जाने वाले उपकरण (जैसे संकलक, दुभाषिए, पार्सर) कैसे बनाए जाते हैं, और क्या सीमाएँ हैं, को समझने के लिए इसका कोर्स करना सार्थक है।

इसका एक अकादमिक संदर्भ में यह करने लायक भी है, क्योंकि यह दिलचस्प बुनियादी बातों को उजागर करता है, न कि वास्तविक दुनिया की कई जटिलताओं को, जो विरासत और भाषाओं और वास्तुकला यानी बहुत सी जटिलता से निपटने में गड़बड़ और व्यर्थ है। यह भी अधिक संभावना है कि आप उद्योग में एक पर काम करने की तुलना में एक पूरे के निर्माण में एक कंपाइलर के सभी पहलुओं पर काम करेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.