अब्स्ट्रक्शन इनवर्शन

From Vigyanwiki

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

संभावित दुष्प्रभाव हैं:

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

उदाहरण

अनुभवी प्रोग्रामिंग मंडलियां के कथित उदाहरणों में शामिल हैं:

  • एडीए प्रोग्रामिंग भाषा में, एक तुल्यकालन प्रिमिटिव के रूप में मिलन स्थल निर्माण का विकल्प अधिक जटिल आधार पर सेमाफोर (प्रोग्रामिंग) जैसे सरल निर्माणों को लागू करने के लिए प्रोग्रामर को वाध्य करता है।[1]
  • एपलसॉफ्ट बेसिक में, तैरनेवाला स्थल अंकगणित के शीर्ष पर पूर्णांक अंकगणित लागू किया गया था, और कोई बिटवाइज़ ऑपरेटर नहीं थे और रेखापुंज ग्राफिक्स के ब्लिटिंग के लिए कोई समर्थन नहीं था (भले ही एप्पल द्वितीय के रेखापुंज हार्डवेयर पर भाषा समर्थित वेक्टर ग्राफिक्स)। इसके कारण आधारभूत में लिखे गए गेम और अन्य प्रोग्राम धीमे चलने लगे।
  • एपलसॉफ्ट बेसिक की तरह, लुआ (प्रोग्रामिंग भाषा) के पास एकमात्र संख्यात्मक प्रकार के रूप में एक तैरनेवाला स्थल प्रकार है, जब डेस्कटॉप कंप्यूटर के लिए कॉन्फ़िगर किया गया था, और इसमें लुआ 5.2 से पहले कोई बिटवाइज़ ऑपरेटर नहीं था।
  • किसी फ़ंक्शन का प्रतिनिधित्व करने के लिए ऑब्जेक्ट बनाना ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषाओं जैसे जावा (प्रोग्रामिंग भाषा) और C++ (विशेष रूप से सी ++ 11 और जावा 8 से पहले) में बोझिल है, जिसमें फ़ंक्शन प्रथम श्रेणी की ऑब्जेक्ट नहीं हैं। सी ++ में () ऑपरेटर को ओवरलोड करके ऑब्जेक्ट 'कॉल करने योग्य' बनाना संभव है, लेकिन एसटीएल में फंक्टर जैसे नए वर्ग को लागू करना अभी भी आवश्यक है। (सी ++ 11 का लैम्ब्डा फ़ंक्शन फ़ंक्शन का प्रतिनिधित्व करने वाली वस्तु बनाना बहुत आसान बनाता है।)
  • टॉम लॉर्ड ने सुझाव दिया है कि अपाचे सबवर्जन (सॉफ्टवेयर) संस्करण नियंत्रण प्रणाली खराब प्रदर्शन वाले पढ़ने/लिखने वाले डेटाबेस पर केवल-लिखने वाले डेटाबेस को लागू करने के अमूर्त उलटाव के लिए भुगतान करती है।[2]

अनुभवी प्रोग्रामिंग मंडलियों के बाहर सामान्य उदाहरणों में शामिल हैं:

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

यह भी देखें

संदर्भ

  1. DIN कर्नेल लिस्प परिभाषा संस्करण 1.2 की आलोचना, फुटनोट 2 Archived 2018-05-06 at the Wayback Machine - कहते हैं (संदर्भ के बिना) कि यह शब्द एडा रेंडीज़वस की आलोचनाओं से निकला है, यह सबसे शुरुआती उपयोगों में से एक प्रतीत होता है।
  2. स्रोतफ्रॉग: तोड़फोड़ पर टॉम लॉर्ड</रेफरी>
    • किसी रिलेशनल डेटाबेस में डेटा में हेरफेर करने के लिए संग्रहीत कार्यविधियों का उपयोग करना, प्रोग्रामर्स को ऐसी प्रक्रियाओं को तैनात करने का अधिकार दिए बिना, डेटाबेस के बाहर प्रश्नों को फिर से लागू करने की ओर ले जाता है। उदाहरण के लिए, बड़े डेटासेट (अत्यधिक मामलों में - संपूर्ण तालिकाएँ) प्राप्त किए जाते हैं और वास्तविक फ़िल्टरिंग एप्लिकेशन कोड में होती है। वैकल्पिक रूप से, एक से अधिक पंक्ति क्वेरी चलाने के बजाय हजारों पंक्तियों को एक-एक करके अपडेट (सम्मिलित या प्राप्त किया गया) किया जाता है।
    • Microsoft का WinUI 3 व्यवस्थित रूप से विंडोज़ के टाइटल बार को एक कस्टम के साथ बनाता है जो एंड-यूज़र की रंग सेटिंग्स को अनदेखा करता है, इसके बजाय हमेशा ग्रे दिखाई देता है। अंतिम-उपयोगकर्ता के चुने हुए रंग को टाइटल बार पर लागू करने के लिए विंडोज 11 पर और अनुकूलन कोड का उपयोग करने की आवश्यकता होती है, और कस्टम टाइटल बार को पूरी तरह से विंडोज 10 पर किसी अन्य कस्टम के साथ बदलने की आवश्यकता होती है।
    रेफरी>टाइटल बार कस्टमाइजेशन - विंडोज़ ऐप्स | माइक्रोसॉफ्ट लर्न


बाहरी संबंध

  • Abstraction Inversion at Portland Pattern Repository - extensive discussion, much of it taking "abstraction inversion" in the sense of "concealed complexity"