लेकिन मैं क्या सोच रहा था कि क्या कंप्यूटर भी शून्य से विभाजित करने का प्रयास करता है, या क्या यह केवल "सुरक्षा में निर्मित" है, ताकि जब यह "0" देखता है तो यह गणना करने से पहले प्रयास में एक त्रुटि देता है?
चूंकि x/0
कोई मतलब नहीं है, अवधि, कंप्यूटर को हमेशा शून्य से विभाजन के लिए जांचना चाहिए। यहां एक समस्या है: प्रोग्रामर यह गणना (a+b)/c
करने के लिए परेशान होने के बिना गणना करना चाहते हैं कि क्या गणना भी समझ में आती है। सीपीयू + संख्या प्रकार + ऑपरेटिंग सिस्टम + भाषा द्वारा शून्य से विभाजन की अंडर-द-हूड प्रतिक्रिया, या तो कठोर (उदाहरण के लिए, प्रोग्राम क्रैश) या कुछ अधिक सौम्य है (उदाहरण के लिए, ऐसा कोई मूल्य बनाएं जो कोई ऐसा न करे आईईईई फ्लोटिंग पॉइंट NaN
, एक संख्या जो "नॉट ए नंबर" है) जैसी भावना ।
एक साधारण सेटिंग में, एक प्रोग्रामर से यह जानने की उम्मीद की जाती है कि क्या (a+b)/c
समझ में आता है। इस संदर्भ में, शून्य द्वारा विभाजन की जांच करने का कोई कारण नहीं है। यदि विभाजन शून्य से होता है, और यदि मशीन भाषा + कार्यान्वयन भाषा + डेटा प्रकार + ऑपरेटिंग सिस्टम की प्रतिक्रिया प्रोग्राम को क्रैश करने के लिए है, तो यह ठीक है। यदि प्रतिक्रिया एक मूल्य बनाने के लिए है जो अंततः कार्यक्रम में हर संख्या को प्रदूषित कर सकती है, तो ठीक है, भी।
न तो "कुछ कठोर" या "अत्यधिक सौम्य" उच्च विश्वसनीयता कंप्यूटिंग की दुनिया में करने के लिए सही चीज है। उन डिफ़ॉल्ट प्रतिक्रियाओं से एक मरीज की मौत हो सकती है, एक विमान दुर्घटनाग्रस्त हो सकता है, या गलत जगह पर बम विस्फोट कर सकता है। उच्च विश्वसनीयता वाले वातावरण में, एक प्रोग्रामर जो लिखता है, (a+b)/c
उसे कोड समीक्षा के दौरान या आधुनिक समय में मृत्यु के लिए चुना जाएगा, संभवतः एक उपकरण द्वारा स्वचालित रूप से मृत्यु को चुना जाता है जो वर्बोटन निर्माणों की जांच करता है। इस वातावरण में, उस प्रोग्रामर को इसके बजाय div(add(a,b),c)
(और संभवतः त्रुटि स्थिति के लिए कुछ जाँच) की तर्ज पर कुछ लिखना चाहिए था। हुड के नीचे, div
(और भी add
) फ़ंक्शन / मैक्रोज़ विभाजन को शून्य (या मामले में अतिप्रवाह) से बचाता है add
। क्या है कि सुरक्षा की जरूरत बहुत कार्यान्वयन विशिष्ट है।