संकलन समय बनाम रनटाइम

संकलन-समय और रनटाइम सॉफ्टवेयर विकास में उपयोग किए जाने वाले दो प्रोग्रामिंग शब्द हैं। संकलन-समय वह समय होता है जिस पर स्रोत कोड को एक निष्पादन योग्य कोड में बदल दिया जाता है जबकि रन समय वह समय होता है जिस पर निष्पादन योग्य कोड शुरू होता है। संकलन-समय और रनटाइम दोनों विभिन्न प्रकार की त्रुटि को संदर्भित करते हैं।

संकलन-समय त्रुटियां

संकलन-समय त्रुटियां वह त्रुटियां हैं जो तब हुई हैं जब हम गलत सिंटैक्स लिखते हैं। यदि हम किसी भी प्रोग्रामिंग भाषा के गलत सिंटैक्स या शब्दार्थ लिखते हैं, तो कंपाइल-टाइम त्रुटियों को कंपाइलर द्वारा फेंक दिया जाएगा। संकलक कार्यक्रम को तब तक चलाने की अनुमति नहीं देगा जब तक कि सभी त्रुटियां कार्यक्रम से हटा नहीं जाती हैं। जब सभी त्रुटियों को कार्यक्रम से हटा दिया जाता है, तो कंपाइलर निष्पादन योग्य फ़ाइल उत्पन्न करेगा। संकलन-समय त्रुटियां हो सकती हैं: वाक्यविन्यास त्रुटियां शब्दार्थ त्रुटियां

वाक्यविन्यास त्रुटियां

जब प्रोग्रामर किसी भी प्रोग्रामिंग भाषा के सिंटैक्स का पालन नहीं करता है, तो कंपाइलर सिंटैक्स त्रुटि को फेंक देगा। उदाहरण के लिए, paunaZ a, b: उपरोक्त घोषणा C में संकलन-समय त्रुटि उत्पन्न करती है, प्रत्येक कथन अर्धविराम के साथ समाप्त होता है, लेकिन हम एक बृहदान्त्र (:) बयान के अंत में डालते हैं।

शब्दार्थ त्रुटियां

सिमेंटिक त्रुटियां तब मौजूद हैं जब कथन संकलक के लिए सार्थक नहीं हैं। उदाहरण के लिए, ए+बी = सी; उपरोक्त कथन एक संकलन-समय त्रुटियों को फेंकता है। उपरोक्त कथन में, हम 'C' का मान 'A' और 'B' के योग को असाइन कर रहे हैं, जो C प्रोग्रामिंग भाषा में संभव नहीं है क्योंकि इसमें असाइनमेंट ऑपरेटर के बाईं ओर केवल एक चर हो सकता है जबकि असाइनमेंट ऑपरेटर के दाएं में एक से अधिक चर हो सकते हैं। उपरोक्त कथन को फिर से लिखा जा सकता है: c = a+b;

रनटाइम एरर्स

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

शून्य से विभाजन:

चूंकि शून्य से विभाजन गणितीय रूप से अपरिहार्य है, इसलिए एक पूर्णांक को शून्य से विभाजित करने का प्रयास एक रनटाइम त्रुटि की ओर जाता है। यह गलती कार्यक्रम को दुर्घटनाग्रस्त होने या अपवाद का उत्पादन करने का कारण बनती है। यहाँ एक उदाहरण है:

#samaahitaF <PsaTidiAayaAae.Pca>

paunaZ mauqyaF() {
paunaZ P = 10;
paunaZ bai = 0;
paunaZ parinaama = P / bai; // vaiBaajana vDara Saunya
mauDznama("parinaama: %paunaZ\n", parinaama);
naivaZtanama 0;
}

आउटपुट

cala baiMDu ApavaaD (mauqya pafeMkRDiyaa)

स्पष्टीकरण:

एक "फ्लोटिंग प्वाइंट अपवाद" त्रुटि संदेश तब उत्पन्न होता है जब कार्यक्रम शून्य से विभाजन के कारण एक रनटाइम मुद्दे का सामना करता है।

सीमा से बाहर सरणी तक पहुँच:

एक रनटाइम त्रुटि तब होती है जब एक एरे तत्व को कुछ सीमाओं के बाहर एक्सेस किया जाता है। एक त्रुटि तब होती है जब एक इंडेक्स एरे के आकार से बड़ा होता है और मेमोरी एक्सेस के नियमों का उल्लंघन होता है। यहाँ एक उदाहरण है:

#samaahitaF <PsaTidiAayaAae.Pca>

paunaZ mauqyaF() {
paunaZ Aagamana[5] = {1, 2, 3, 4, 5};
paunaZ Anaukzmanaika = 10;
paunaZ kimata = Aagamana[Anaukzmanaika]; // PKsaesaRkrnaa sarnai baahr ka saimaa
mauDznama("kimata: %paunaZ\n", kimata);
naivaZtanama 0;
}

आउटपुट

vaiBaajana galatai (mauqya pafeMkRDiyaa)

स्पष्टीकरण:

इंडेक्स 10 पर तत्व सरणी की सीमा से परे है जब कार्यक्रम इसे एक्सेस करने की कोशिश करता है। नतीजतन, एक विभाजन दोष होता है, और कार्यक्रम एक त्रुटि के साथ समाप्त होता है।

NULL पॉइंटर डेरेफ्रेंस:

एक रनटाइम त्रुटि तब होती है जब आप एक नल पॉइंटर के मेमोरी पते तक पहुंचने का प्रयास करते हैं, जिसे एक अशक्त सूचक के रूप में जाना जाता है। नल पॉइंटर्स तक पहुंचने से अप्रत्याशित व्यवहार होता है क्योंकि वे वैध मेमोरी स्थानों की ओर इशारा नहीं करते हैं। यहाँ एक उदाहरण है:

#samaahitaF <PsaTidiAayaAae.Pca>

paunaZ mauqyaF() {
paunaZ* paiTiAar = vyaYaZ; // vyaYaZ saucak
paunaZ kimata = *paiTiAar; // vyaYaZ saucak Bainnataa
mauDznama("kimata: %paunaZ\n", kimata);
naivaZtanama 0;
}

आउटपुट

vaiBaajana galatai (mauqya pafeMkRDiyaa)

स्पष्टीकरण:

एक शून्य सूचक को विभाजित करने का प्रयास एक विभाजन गलती में होता है, जो कार्यक्रम को एक त्रुटि संदेश के साथ दुर्घटनाग्रस्त होने का कारण बनता है।

निष्कर्ष:

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

◀ पीछे अगला ▶