वास्तव में "शब्दानुभवनीय" साइड-इफेक्ट का क्या मतलब है?


11

मेरे पास शुद्ध कार्यों के संबंध में प्रश्न हैं। विकिपीडिया पृष्ठ के अनुसार शुद्ध कार्य के लिए अपेक्षित में से एक है:

परिणाम का मूल्यांकन किसी भी शब्दानुभवनीय दुष्प्रभाव या आउटपुट का कारण नहीं बनता है, जैसे कि उत्परिवर्तनीय वस्तुओं का उत्परिवर्तन या I / O उपकरणों के आउटपुट।

अब इसका वास्तव में क्या मतलब है। या इसके बजाय मैं एक साइड इफेक्ट कैसे बना सकता हूं जो शब्दार्थ रूप से देखने योग्य नहीं है?


2
आपको हाथ से लहराते सामान पर बहुत अधिक भार नहीं डालना चाहिए जो एक बार विकिपीडिया पर मिल सकता है।
बाउर

1
@AndrejBauer हुह? इसके बारे में क्या हाथ लहराते हैं? अनुसंधान-स्तर नहीं, हो सकता है (मुझे कोई आपत्ति नहीं है अगर यह कंप्यूटर साइंस में माइग्रेट है ) - हालांकि आपकी प्रतिक्रिया दी गई है, शायद नहीं।
गिल्स एसओ- बुराई को रोकना '

मुझे लगता है कि मुझे केवल "शब्दार्थ रूप से अवलोकन योग्य" वाक्यांश पसंद नहीं है।
लेडी बाउर

1
मुझे इसे अलग तरीके से रखना चाहिए: "शब्दार्थ रूप से अवलोकन योग्य" और "अवलोकन योग्य" में क्या अंतर है? "शब्दार्थ" केवल एक चर्चा है जो यहाँ कोई मतलब नहीं है।
लेडी बाउर

"सिमेंटिक" प्रोग्रामिंग थ्योरी के विभिन्न क्षेत्रों में कुछ विशेष अर्थ
रखता है

जवाबों:


11

एक कार्यक्रम का शब्दार्थ उसके व्यवहार का एक मॉडल है, जो किसी भी वैज्ञानिक मॉडल की तरह, उन पहलुओं की उपेक्षा करता है जिन्हें आप अध्ययन नहीं करना चाहते हैं।

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

विशिष्ट शब्दार्थ में, समय और बिजली की खपत जैसे दुष्प्रभावों को अनदेखा किया जाता है। यहां तक ​​कि अगर एक सांस की सेटिंग में जहां आप एक हास्केल दुभाषिया प्रॉम्प्ट पर एक अभिव्यक्ति टाइप करते हैं, तो परिणाम का मुद्रण एक साइड इफेक्ट है (यदि आप एक अनंत वस्तु को प्रिंट करने की कोशिश करते हैं, तो यह मायने रखता है)। यदि हास्केल दुभाषिया स्मृति से बाहर निकलता है, तो यह "वास्तविक दुनिया" मॉडल में एक अवलोकन योग्य प्रभाव है, लेकिन हास्केल के एक आदर्श मॉडल में नहीं है जो प्रभावी रूप से अनबाउंड कम्प्यूटेशन की अनुमति देता है।

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

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

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

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