प्रोग्रामिंग में "प्रसंग" शब्द? [बन्द है]


161

मैं अब कुछ महीनों से प्रोग्रामिंग कर रहा हूं और कक्षाओं में अक्सर इस्तेमाल किया जाने वाला शब्द "संदर्भ" है। जैसे ServletContext(जावा), Activity(Android), Service(Java, Android),NSManagedContext (Objective-C, iOS)।

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

मैं स्टैक ओवरफ्लो पर संदर्भ खोज रहा हूं, लेकिन कोई भी प्रश्न / उत्तर मेरी मदद करने में सक्षम नहीं था।

मुझे बहुत खुशी होगी अगर कोई मुझे स्पष्टीकरण दे सके।


6
प्रसंग कह रहा है: वह क्षेत्र जिसके भीतर यह वस्तु कार्य करती है।
ब्लंडेल

7
संदर्भ एक वस्तु या प्रणाली की स्थिति है, एक समय में
मैट

जवाबों:


190

मान लीजिए कि आप डेंटिस्ट के पास जाते हैं, जिसका दांत बाहर निकाला गया है।

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

अब कहते हैं कि आप बैंक के लिए चलते हैं।

बैंक में, आप $ 100 निकालने के लिए कहते हैं। टेलर को आपको पैसे देने से पहले अपनी पहचान स्थापित करने की आवश्यकता है, इसलिए आपको शायद उन्हें ड्राइविंग लाइसेंस दिखाना होगा या अपना एटीएम कार्ड स्वाइप करना होगा और अपना पिन नंबर दर्ज करना होगा। किसी भी तरह से, आप जो प्रदान कर रहे हैं वह संदर्भ है । टेलर लेन-देन को आगे बढ़ाने के लिए इस जानकारी का उपयोग करता है। वे फिर आपसे पूछ सकते हैं कि आप किस खाते से पैसा निकालना चाहते हैं। जब आप जवाब देते हैं, "मेरा बचत खाता" , तो यह और भी अधिक संदर्भ है

जितना अधिक संदर्भ आप देते हैं, उतना अधिक ज्ञान दूसरे पक्ष को आपके अनुरोध से निपटने में मदद करना है। कभी-कभी संदर्भ वैकल्पिक होता है (बेहतर परिणाम प्राप्त करने के लिए आपके Google खोज में अधिक से अधिक शब्द टाइप करने के लिए) और कभी-कभी इसकी आवश्यकता होती है (जैसे एटीएम में अपना पिन नंबर प्रदान करना)। किसी भी तरह से, यह ऐसी जानकारी है जो आमतौर पर सामान लाने में मदद करती है।

अब कहते हैं कि आप अपना $ 100 लेते हैं और एक हवाई जहाज का टिकट खरीदते हैं ताकि आपका मुंह गर्म रहे।

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

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

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

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

उम्मीद है की वो मदद करदे।


22
@ ब्रायन: आपके पोस्ट और यहां दिए गए अन्य उत्तरों से मुझे लगता है कि मैं इसे समझना शुरू कर सकता हूं। एक वस्तु जो किसी घटना के बारे में राज्य की जानकारी लेती है, एक "संदर्भ" वस्तु है? क्या यह सही होगा? तो एक RequestContext ऑब्जेक्ट एक विशिष्ट अनुरोध के बारे में जानकारी ले जाएगा, सही? और जब एक और अनुरोध आता है तो RequestContext-object से जुड़ी जानकारी बदल जाएगी। क्या यह कहना गलत है कि एक संदर्भ-वस्तु डीटीओ (डेटा ट्रांसफर ऑब्जेक्ट) की तरह एक सा है? हालाँकि, एक संदर्भ विभिन्न संबंधित "चीजों" के बारे में जानकारी देता है, जबकि डीटीओ किसी व्यक्ति जैसी वस्तु की जानकारी
रखता है

9
आपने इसे भुनाया है, यह बिल्कुल सही है। एक RequestContext वास्तव में प्रगति के अनुरोध के बारे में जानकारी ले जाएगा (उदाहरण के लिए, ग्राहक का स्थान)। कॉन्टेक्ट्स डीटीओ / वीओ के समान हैं, लेकिन आमतौर पर दृढ़ता से टाइप नहीं होते हैं। लेकिन आपको अवधारणा ठीक लगी है।
ब्रायन केली

5
@ ब्रायन: एक और सवाल मन में लाया गया था, जब संदर्भ-मेनू के बारे में बात करते हुए, संदर्भ का अर्थ जैसा कि मैंने इस उत्तर से सीखा है, मेरे दिमाग में इसका कोई मतलब नहीं है। जैसा कि मैं अब समझती हूं कि किसी चीज के बारे में कैरी स्टेट के लिए संदर्भ (छोटा) है। तो, इस तरह से "संदर्भ" शब्द का उपयोग करते समय इसका क्या अर्थ है?
user772058

9
अच्छा प्रश्न। "संदर्भ मेनू" के भीतर "संदर्भ" का अर्थ है, "मेनू पर आपको जो सामान दिखाई देगा, वह इस बात पर निर्भर करता है कि आप कहां क्लिक करते हैं, जब आप क्लिक करते हैं और आपके आवेदन में और क्या हो रहा है"। जानकारी के वे टुकड़े (जहां / जब / आपने क्या क्लिक किया था) संदर्भ का प्रतिनिधित्व करते हैं और जीयूआई कोड को भेजे जाएंगे ताकि यह तय कर सके कि मेनू पर क्या चीजें पेश की जानी हैं।
ब्रायन केली

2
तो, विधि के पैरामीटर संदर्भ हैं। क्या मै गलत हु?
Canydoğan कर सकते हैं

14

जानकारी को पास करने के लिए बकेट के रूप में देखा जा सकता है। यह आमतौर पर ऐसी चीजों को पारित करने के लिए उपयोग किया जाता है जो जरूरी नहीं कि सीधे एक विधि कॉल से बंधा हो, लेकिन अभी भी प्रासंगिक हो सकता है। इसका वर्णन करने का एक तरीका यह है कि "आपके द्वारा देखभाल की जा सकने वाली सामग्री" हो सकती है।

उदाहरण के लिए यदि आप एक db में मान को अद्यतन करने के लिए एक सेवा लिख ​​रहे थे, तो आप शायद रिकॉर्ड आईडी और नए मान में पास कर देंगे।

यदि आप सामान्य इंटरफेस चाहते हैं, तो आप पास करने के लिए एक संदर्भ भी परिभाषित कर सकते हैं, जैसे कि सेवा मनमाने ढंग से व्यावसायिक तर्क दे सकती है। तो आप एक उपयोगकर्ता प्रमाणीकरण, उपयोगकर्ता की सत्र स्थिति, आदि ... संदर्भ में शामिल कर सकते हैं, क्योंकि सेवा इन मूल्यों पर निर्भर अतिरिक्त तर्क प्रदर्शन कर सकती है।


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

4
मूल रूप से एक समय में राज्य, कोई इससे अधिक जटिल नहीं है
मैट

13

यह 2015 है - इस धागे के शुरू होने के वर्षों बाद।

फिर भी, मैं इस संदेश को वहां किसी को भी मेरी मदद करने के लिए पोस्ट कर रहा हूं जो "संदर्भ" को समझने के लिए संघर्षरत है।

किसी भी तरह से मैं जावा प्रोग्राम में कॉन्टेक्ट का उपयोग करने का दावा नहीं करता - इसलिए इसका पूरी तरह से आप हार्ड कोडिंग में कॉन्टेक्स्ट को लिखना चाहते हैं, तो यहाँ पर जाता है: -

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

उदाहरण के लिए

रोगी डॉक्टर के पास जाता है और कहता है कि treat_me ("मुझे सिरदर्द है") डॉक्टर कार्यालय मरीज को भरने के लिए एक फॉर्म देता है। रोगी रूप भरता है। फॉर्म का उपयोग डॉक्टर द्वारा "treat_me" अनुरोध को पूरा करने के लिए किया जाता है।

इस प्रकार अनुरोध अब दिखता है:

treat_me ( "i have a headache", filled_form_num_23321 ) 

यहाँ कैसे filled_form_num_23321 लग रहा है:

Q. हालत का नेतृत्व करने के लिए क्या? उ।
नीम स्कॉच के 10 खूंटे अंतिम नि। क्यू। मूल नाम? A. जो बिग्रेडिंकर
Q.Age? 98

इस लेन-देन में filled_form_num_23321 में "संदर्भ" है।

आशा है कि यह "संदर्भ" की अवधारणा को स्पष्ट करने में मदद करता है।


7

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

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

स्ट्रोक की घनी परतें 1.5 पिक्सेल भराव का रंग काले रंग की सीमा है (155, 200) स्ट्रोक का रंग लाल है

यह मूल रूप से वर्तमान समय में राज्य है ...


5

एक व्यावहारिक उदाहरण देने के लिए। मान लें कि आपके पास उपयोगकर्ता (ब्राउज़र पर लॉग ऑन की गई) और ब्राउज़र की भाषा के आधार पर कुछ जानकारी लाने / प्रस्तुत करने के लिए एक निश्चित वेबपेज है। जानकारी प्राप्त करने का तर्क उपयोगकर्ता और भाषा से स्वतंत्र है। आपके पृष्ठ को एक उपयोगकर्ता और एक भाषा प्राप्त होगी ... तर्क के लिए यह महत्वपूर्ण नहीं है अगर यह मैं या आप या अंग्रेजी या स्पेनिश है।

कुछ छद्म कोड:

class FooPage
{
    void handleRequest(RequestContext context)
    {
        User user = context.getUser();
        Locale locale = context.getLocale();

        … do some logic based on the context
    }
}

यह मुश्किल नहीं है, लेकिन अवधारणा को समझने में कुछ समय लगता है


5

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

संदर्भ एक महत्वपूर्ण अवधारणा है क्योंकि:

  1. निष्पादन योग्य इकाइयाँ (कार्य, प्रक्रियाएँ, निर्देश) अलग-अलग परिणाम उत्पन्न कर सकती हैं या अलग-अलग संदर्भों में अलग-अलग व्यवहार कर सकती हैं।
  2. बड़ा या अधिक जटिल संदर्भ, यह समझने में अधिक कठिन है कि कोड का एक टुकड़ा क्या करता है (यही कारण है कि वैश्विक चर इस पर हैरान हैं)।

आपको संदर्भ कक्षाएं लिखने या संदर्भ मापदंडों को पास करने की आवश्यकता नहीं है । किसी फ़ंक्शन / विधि को दिया गया कोई भी पैरामीटर निष्पादन के संदर्भ का हिस्सा बन जाता है जब इसे लागू किया जाता है।

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


मैं देख रहा हूं कि एक दूसरा संस्करण है। क्या मैं इसे वहां भी पढ़ सकता हूं?
user772058

मैंने किताब की दुकान पर दूसरा संस्करण तैयार किया, और मूल के साथ रहने का फैसला किया। मुझे याद नहीं क्यों।
अपाला

2

आपके मामले में संदर्भ वह वातावरण है जहां आपका एप्लिकेशन चल रहा है।

यह जानकारी / सेवाएं / क्षमताएं प्रदान करता है, जिसे ठीक से चलाने के लिए आपके आवेदन की आवश्यकता होगी।

HTH


0

सभी अक्सर लेखक मानता है कि संदर्भ के संदर्भ में "संदर्भ" शब्द का विस्तृत उपयोग किया जा रहा है।

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

ऐसा लगता है कि लेखक कुछ प्रकार के कंटेनर का अर्थ संदर्भ का उपयोग कर रहा है, शायद एक ढेर, जो कुछ का संदर्भ रखता है। यह चर्चा शब्द बन गया है जो कई अर्थों और भ्रमित करने वाली चीजों को ले रहा है। क्या यह तत्व हैं जो संदर्भ हैं और एक संदर्भ में संग्रहीत किए जा रहे हैं। संदर्भ के भ्रम को कम करने के लिए कि संदर्भ शब्द का उपयोग किया जा रहा है, यह कहा जा सकता है कि "रनटाइम तत्वों के रूप में संदर्भ को संग्रहीत करने के लिए एक कंटेनर बनाता है।" बेहतर अभी तक "रनटाइम तत्वों के रूप में राज्य को संग्रहीत करने के लिए एक कंटेनर बनाता है और यह कंटेनर जिसके साथ राज्य है उसे CONTEXT कहा जाता है।"


0

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

क्या प्रोग्रामिंग भाषाओं संदर्भ मुक्त हैं?

निश्चित नहीं है कि आप इसे एक उदाहरण के रूप में उपयोग कर सकते हैं और इससे कुछ जानकारी खींच सकते हैं या नहीं। मैं भी तकनीकी प्रोग्रामिंग शब्द "संदर्भ" की एक भाषा अज्ञेय स्पष्टीकरण सुनना पसंद करूंगा

संपादित करें: या यह कम से कम दिखाता है कि शब्द "संदर्भ" को तकनीकी, प्रोग्रामिंग संदर्भ (कोई भी इरादा नहीं) में लागू किया जा सकता है। संभवतः शब्द के एक से अधिक ठोस अनुप्रयोग में।

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