क्या आपको डीबगर का प्रभावी ढंग से उपयोग करने में कोई रूचि है? तो ठीक। क्या आपको विश्वसनीय या कुशल कोड लिखने में कोई रूचि है? तो ठीक।
व्यक्तिगत रूप से मुझे फ्रंटेंड से अधिक बैकएंड की परवाह है। मैं x86 के बजाय एआरएम के लिए संकलन की अनुशंसा करता हूं, इस मामले में आप आवश्यक रूप से असेंबलर नहीं सीख रहे हैं (जहां मैं अपने स्वयं के डिस्सेबलर को लिखने की सलाह देता हूं), इसलिए यदि आप जीसीसी का उपयोग करते हैं तो इसका डिस्सेबलर होता है और आप देख सकते हैं कि आपका उच्च स्तरीय कोड क्या बदल सकता है अंतिम परिणाम, साथ ही संकलक विकल्पों के साथ आप कितना परिवर्तन कर सकते हैं। यह उच्च स्तर के भाषा प्रोग्रामर के लिए एक आंख खोलने का अनुभव है, यह समझने के लिए कि एक ही कोड में संकलक और कमांड लाइन विकल्पों के आधार पर जंगली रूप से अलग-अलग परिणाम हो सकते हैं।
कंपाइलर के बीच में मैं एलसीसी और एसडीसीसी दोनों की सिफारिश करता हूं।आप या एल सी सी किताब खरीदने के लिए नहीं चाहते हो सकता है हो सकता है:
[http://www.cs.princeton.edu/software/lcc/][1]
आप न की जरूरत है, हालांकि, स्रोत नेट पर (कई रूपों में) है। जैसा कि एसडीसीसी (छोटा डिवाइस सी कंपाइलर है, मूल रूप से 8051 और अन्य 8 बिट माइक्रो के लिए बनाया गया है)। मेरी सिफारिश है कि इंटरफ़ेस में जाना है जहां संकलक बैकएंड को पूरा करता है, आप पाएंगे कि आपका कोड परमाणु भागों की एक श्रृंखला में बदल गया है, कभी-कभी रिवर्स पॉलिश की तरह। ए = बी +7; निरंतर पूर्णांक लोड होने का अंत हो सकता है 7. परिवर्तनीय बी को अगले उपलब्ध रजिस्टरों में स्मृति से पढ़ें। बी के साथ 7 प्लस रजिस्टर जोड़ें और अगले उपलब्ध रजिस्टर में सेव करें। एक के लिए स्मृति में स्थान में रजिस्टर में मूल्य स्टोर करें।
आप इसे जीसीसी के साथ भी कर सकते हैं, लेकिन आप यह महसूस कर सकते हैं कि जीसीसी उतना ही महान नहीं है जितना आप थे। मिश्रणों की संख्या और बैकएंडों की संख्या और मिश्रण में हाथों की संख्या आदि के कारण, यह बहुत बड़ा और जटिल है। हालांकि यह प्राप्त होता है, और उन भाषाओं और प्लेटफार्मों के लिए काम करता है जिनके विशेषज्ञों को बनाए रखा जाता है। कौन सी जीसीसी आपको सिखा सकती है कि अन्य लोग ऐसा नहीं कर सकते हैं, फ्रंटेंड पर विभिन्न भाषाओं को एक सामान्य मध्यम भाषा में उबाल दिया जाएगा जो पिछला अंत प्रत्येक प्लेटफॉर्म के लिए विशिष्ट निर्देशों में बदल जाता है।
अंत में अग्रभाग। अधिकांश भाग लोगों के लिए बाइसन/yacc का उपयोग करें, जो एक उपकरण है जिसे आप अपनी उच्च स्तरीय भाषा के लिए विवरण बनाते हैं और टूल आपके विवरण के आधार पर उपयोगकर्ता इनपुट को पार्स कर सकता है और यदि आप चाहें तो इसे इस मध्य भाषा में बदल सकते हैं।
यदि आप अपने शौक या करियर सॉफ्टवेयर के साथ करियर करने की योजना बनाते हैं तो मैं कहूंगा कि आपको इस अभ्यास के माध्यम से कई बार नहीं जाना चाहिए। आपके कोड की समग्र गुणवत्ता, आपके कोड की विश्वसनीयता, आपके कोड का प्रदर्शन, और दक्षता लेखन कोड इस ज्ञान से प्रभावित होगा।
मैं कथन से सावधान रहूंगा "कंपाइलर के लिए मत लिखो, लेकिन लोगों को पढ़ने के लिए लिखें।" वहाँ बहुत बुरा कोड है क्योंकि इस तरह के बयान का दुरुपयोग किया जाता है। रखरखाव के परिणामों के लिए कोड लिखना खराब कोड में परिणाम बनाए रखना है। रखरखाव विश्वसनीयता और प्रदर्शन के साथ पारस्परिक रूप से अनन्य है। मैं व्यक्तिगत रूप से खराब कोड की तुलना में विश्वसनीयता और प्रदर्शन करता हूं कि कोई भी कॉलेज ग्रेड बनाए रख सकता है।
आप समय के साथ सीखेंगे, संकलक के लिए लिखने के लिए बहुत कठिन प्रयास नहीं करेंगे। बस अपने कोड के साथ अपमानजनक न हों, भाषा की जीई whiz सुविधाओं का उपयोग न करें। यदि आपको कुछ कंपाइलर सुविधा को समझने के लिए अतिरिक्त शोध करना पड़ता है, तो आप यह सुनिश्चित कर सकते हैं कि अधिकांश दुनिया इसे समझ में नहीं आती है जिसमें व्यक्ति को कंपाइलर्स में लागू करना है। इसलिए आप उस सुविधा को संकलकों में लगातार काम नहीं करने की उम्मीद कर सकते हैं, इसलिए आपको इसे पहले स्थान पर उपयोग करना चाहिए। इसका मतलब यह भी है कि एक विशिष्ट कंपाइलर के लिए अपना कोड लिखने की कोशिश न करें, जीसीसी और इसकी विशेषताओं से बहुत जुड़ा न हो, एसडीसीसी और एलसीसी और माइक्रोसॉफ्ट और बोर्लैंड और किल और अन्य को आजमाएं। अपना कोड साफ, सरल, पठनीय और पोर्टेबल बनाएं।
नीचे पंक्ति, यदि आप सॉफ़्टवेयर लिखने के बारे में गंभीर हैं, तो आपको पूरी तरह से यह जानने की आवश्यकता है कि कंपाइलर कैसे काम करता है। जीसीसी, एसडीसीसी, एलसीसी, (और वीबीसीसी अगर आप इसे पा सकते हैं) सभी मुफ़्त, खुले स्रोत हैं, और एक सीखने का अनुभव प्रदान करते हैं जो आपके कोडिंग कौशल में सुधार करेगा।
आजकल दोनों पुनरावृत्तियों के बीच कोई प्रदर्शन अंतर नहीं है। निश्चित नहीं है कि यह क्यों हुआ या कैसे हुआ, लेकिन यदि आप वास्तव में इसे आज़माते हैं तो पुनरावृत्ति वास्तविकता में एक ही समय लेगी। तो सरणी उदाहरण वास्तव में वास्तव में मान्य नहीं है। –
शायद एएसटी पुनर्लेखन स्तर पर अनुकूलक द्वारा तय किया गया ... बस अनुमान लगा रहा है। – dmckee
यह एक समस्या है जिसे एक उन्नत कंपाइलर द्वारा तय किया जा सकता है, लेकिन सभी कंपाइलर ऐसा नहीं करते हैं। यह जानने के लिए और अधिक कारण है कि संकलक कैसे काम करता है और यह क्या कर सकता है। –