इनडायरेक्शन

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

एक अन्य महत्वपूर्ण उदाहरण डोमेन नाम प्रणाली है जो जैसे नामों को सक्षम बनाता है  जगह पर उपयोग किया जाना है जैसे नेटवर्क पते. मानव-पठनीय नामों से नेटवर्क पतों की ओर संकेत का अर्थ है कि वेब पेज के संदर्भ अधिक यादगार हो जाते हैं, और जब किसी वेब साइट को किसी भिन्न सर्वर पर स्थानांतरित किया जाता है तो लिंक को बदलने की आवश्यकता नहीं होती है।

अवलोकन
बटलर लैम्पसन का एक प्रसिद्ध सूत्र कहता है: कंप्यूटर विज्ञान में सभी समस्याओं को दूसरे स्तर के अप्रत्यक्ष (सॉफ्टवेयर इंजीनियरिंग के मौलिक प्रमेय) द्वारा हल किया जा सकता है। इसे अक्सर अप्रत्यक्ष स्तर के स्थान पर अमूर्त परत के साथ जानबूझकर गलत उद्धृत किया जाता है। इसका अक्सर उद्धृत परिणाम यह है, ...अप्रत्यक्ष की बहुत सारी परतों की समस्या को छोड़कर।

अप्रैल फूल दिवस पर टिप्पणियों के लिए अनुरोध,, जोर देकर कहते हैं कि: "(6) It is easier to move a problem around (for example, by moving the problem to a different part of the overall network architecture) than it is to solve it.
 * (6a) (corollary). It is always possible to add another level of indirection."

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

पुनरावर्ती डेटा प्रकार आमतौर पर अप्रत्यक्ष रूप से कार्यान्वित किए जाते हैं, क्योंकि अन्यथा यदि किसी डेटाटाइप के मान में उसी डेटाटाइप के किसी अन्य मान की संपूर्णता शामिल हो सकती है, तो इस डेटाटाइप के मान के आकार की कोई सीमा नहीं हो सकती है।

औपचारिक गणितीय विनिर्देश से प्रतीकात्मक प्रोग्रामिंग करते समय अप्रत्यक्ष का उपयोग काफी सहायक हो सकता है। एक समीकरण में चर x, y और z जैसे सरल उदाहरण से शुरुआत करें $z = \sqrt{ x^2 + y^2}$ किसी भी संख्या का उल्लेख कर सकते हैं. कोई विभिन्न संख्याओं के लिए वस्तुओं की कल्पना कर सकता है और फिर x, y और z किसी विशेष समस्या के लिए उपयोग की जाने वाली विशिष्ट संख्याओं को इंगित कर सकता है। सरल उदाहरण की अपनी सीमा है क्योंकि इसमें अपरिमित रूप से अनेक वास्तविक संख्याएँ हैं। प्रतीकात्मक प्रोग्रामिंग के विभिन्न अन्य भागों में केवल इतने ही प्रतीक हैं। तो एक अधिक महत्वपूर्ण उदाहरण पर आगे बढ़ने के लिए, तर्क में सूत्र α किसी भी सूत्र को संदर्भित कर सकता है, इसलिए यह β, γ, δ, ... या η→π, ς ∨ σ, हो सकता है ... जब सेट-बिल्डर नोटेशन को नियोजित किया जाता है तो कथन Δ={α} का अर्थ सभी सूत्रों का सेट होता है - इसलिए हालांकि संदर्भ α का है, यहां संकेत के दो स्तर हैं, पहला सभी α के सेट पर और फिर दूसरा सेट Δ में α की प्रत्येक घटना के लिए एक विशिष्ट सूत्र।

यह भी देखें

 * हैंडल (कंप्यूटिंग)
 * प्रतिनिधिमंडल पैटर्न
 * पॉइंटर (कंप्यूटर प्रोग्रामिंग)
 * संदर्भ (कंप्यूटर विज्ञान)
 * डेरेफ़रेंस ऑपरेटर
 * डेमेटर का नियम