अब्स्ट्रक्शन इनवर्शन: Difference between revisions

From Vigyanwiki
Line 15: Line 15:
* [[एडीए प्रोग्रामिंग भाषा]] में, एक तुल्यकालन प्रिमिटिव के रूप में मिलन स्थल निर्माण का विकल्प अधिक जटिल आधार पर [[सेमाफोर (प्रोग्रामिंग)]] जैसे सरल निर्माणों को लागू करने के लिए प्रोग्रामर को वाध्य करता है।<ref name="pipeline_on_ada">[http://www.pipeline.com/~hbaker1/CritLisp.html#fn2 DIN कर्नेल लिस्प परिभाषा संस्करण 1.2 की आलोचना, फुटनोट 2] {{Webarchive|url=https://web.archive.org/web/20180506220654/http://www.pipeline.com/~hbaker1/CritLisp.html#fn2 |date=2018-05-06 }} - कहते हैं (संदर्भ के बिना) कि यह शब्द एडा रेंडीज़वस की आलोचनाओं से निकला है, यह सबसे शुरुआती उपयोगों में से एक प्रतीत होता है।</ref>
* [[एडीए प्रोग्रामिंग भाषा]] में, एक तुल्यकालन प्रिमिटिव के रूप में मिलन स्थल निर्माण का विकल्प अधिक जटिल आधार पर [[सेमाफोर (प्रोग्रामिंग)]] जैसे सरल निर्माणों को लागू करने के लिए प्रोग्रामर को वाध्य करता है।<ref name="pipeline_on_ada">[http://www.pipeline.com/~hbaker1/CritLisp.html#fn2 DIN कर्नेल लिस्प परिभाषा संस्करण 1.2 की आलोचना, फुटनोट 2] {{Webarchive|url=https://web.archive.org/web/20180506220654/http://www.pipeline.com/~hbaker1/CritLisp.html#fn2 |date=2018-05-06 }} - कहते हैं (संदर्भ के बिना) कि यह शब्द एडा रेंडीज़वस की आलोचनाओं से निकला है, यह सबसे शुरुआती उपयोगों में से एक प्रतीत होता है।</ref>
* [[एपलसॉफ्ट बेसिक]] में, [[ तैरनेवाला स्थल |तैरनेवाला स्थल]] अंकगणित के शीर्ष पर [[पूर्णांक]] अंकगणित लागू किया गया था, और कोई [[बिटवाइज़ ऑपरेशन|बिटवाइज़ ऑपरेटर]] नहीं थे और [[ रेखापुंज ग्राफिक्स |रेखापुंज ग्राफिक्स]] के [[ टिल तिल |ब्लिटिंग]] के लिए कोई समर्थन नहीं था (भले ही एप्पल द्वितीय के रेखापुंज हार्डवेयर पर भाषा समर्थित वेक्टर ग्राफिक्स)। इसके कारण आधारभूत में लिखे गए गेम और अन्य प्रोग्राम धीमे चलने लगे।
* [[एपलसॉफ्ट बेसिक]] में, [[ तैरनेवाला स्थल |तैरनेवाला स्थल]] अंकगणित के शीर्ष पर [[पूर्णांक]] अंकगणित लागू किया गया था, और कोई [[बिटवाइज़ ऑपरेशन|बिटवाइज़ ऑपरेटर]] नहीं थे और [[ रेखापुंज ग्राफिक्स |रेखापुंज ग्राफिक्स]] के [[ टिल तिल |ब्लिटिंग]] के लिए कोई समर्थन नहीं था (भले ही एप्पल द्वितीय के रेखापुंज हार्डवेयर पर भाषा समर्थित वेक्टर ग्राफिक्स)। इसके कारण आधारभूत में लिखे गए गेम और अन्य प्रोग्राम धीमे चलने लगे।
* Applesoft BASIC की तरह, Lua (प्रोग्रामिंग लैंग्वेज) में एकमात्र संख्यात्मक प्रकार के रूप में एक फ़्लोटिंग-पॉइंट प्रकार है
* एपलसॉफ्ट बेसिक की तरह, लुआ (प्रोग्रामिंग भाषा) के पास एकमात्र संख्यात्मक प्रकार के रूप में एक तैरनेवाला स्थल प्रकार है, जब डेस्कटॉप कंप्यूटर के लिए कॉन्फ़िगर किया गया था, और इसमें Lua 5.2 से पहले कोई बिटवाइज़ ऑपरेटर नहीं था।
रेफरी>[http://www.lua.org/pil/2.3.html लुआ में प्रोग्रामिंग: 2.3 - नंबर] 2009-10-12 तक पहुंचा।</ref> डेस्कटॉप कंप्यूटर के लिए कॉन्फ़िगर किए जाने पर, रेफरी>[http://lua-users.org/wiki/FloatingPoint lua-users c2: फ़्लोटिंग पॉइंट] 2009-10-12 को एक्सेस किया गया।</ref> और इसमें Lua 5.2 से पहले कोई बिटवाइज़ ऑपरेटर नहीं था। रेफरी>[http://lua-users.org/wiki/BitwiseOperators lua-users c2: बिटवाइज ऑपरेटर्स] 15-01-2013 को एक्सेस किया गया।</ref>
 
* [[ जावा (प्रोग्रामिंग भाषा) ]] और [[C++]] (विशेष रूप से C++11 और Java 8 से पहले) जैसी [[ वस्तु के उन्मुख ]] भाषाओं में फ़ंक्शन का प्रतिनिधित्व करने के लिए ऑब्जेक्ट बनाना बोझिल है, जिसमें फ़ंक्शंस प्रथम श्रेणी के ऑब्जेक्ट नहीं होते हैं। C++ में किसी वस्तु को ओवरलोड करके 'कॉल करने योग्य' बनाना संभव है <code>()</code> ऑपरेटर, लेकिन यह अभी भी एक नई कक्षा को लागू करने के लिए आवश्यक है, जैसे कि [http://www.sgi.com/tech/stl/functors.html एसटीएल में फंक्टर]। ([[सी ++ 11]] का लैम्ब्डा फ़ंक्शन फ़ंक्शन का प्रतिनिधित्व करने वाली वस्तु बनाना बहुत आसान बनाता है।)
* [[ जावा (प्रोग्रामिंग भाषा) ]] और [[C++]] (विशेष रूप से C++11 और Java 8 से पहले) जैसी [[ वस्तु के उन्मुख ]] भाषाओं में फ़ंक्शन का प्रतिनिधित्व करने के लिए ऑब्जेक्ट बनाना बोझिल है, जिसमें फ़ंक्शंस प्रथम श्रेणी के ऑब्जेक्ट नहीं होते हैं। C++ में किसी वस्तु को ओवरलोड करके 'कॉल करने योग्य' बनाना संभव है <code>()</code> ऑपरेटर, लेकिन यह अभी भी एक नई कक्षा को लागू करने के लिए आवश्यक है, जैसे कि [http://www.sgi.com/tech/stl/functors.html एसटीएल में फंक्टर]। ([[सी ++ 11]] का लैम्ब्डा फ़ंक्शन फ़ंक्शन का प्रतिनिधित्व करने वाली वस्तु बनाना बहुत आसान बनाता है।)
* टॉम लॉर्ड ने सुझाव दिया है कि सबवर्सन (सॉफ्टवेयर) वर्जन कंट्रोल सिस्टम खराब प्रदर्शन वाले रीड/राइट डेटाबेस पर राइट-ओनली डेटाबेस को लागू करने के अमूर्त व्युत्क्रम के लिए भुगतान करता है।<ref name="lord_on_svn">[https://archive.today/20130222124420/http://sourcefrog.net/weblog/software/vc/subversion/lord-on-svn.html स्रोतफ्रॉग: तोड़फोड़ पर टॉम लॉर्ड<!-- Bot generated title -->]</रेफरी>
* टॉम लॉर्ड ने सुझाव दिया है कि सबवर्सन (सॉफ्टवेयर) वर्जन कंट्रोल सिस्टम खराब प्रदर्शन वाले रीड/राइट डेटाबेस पर राइट-ओनली डेटाबेस को लागू करने के अमूर्त व्युत्क्रम के लिए भुगतान करता है।<ref name="lord_on_svn">[https://archive.today/20130222124420/http://sourcefrog.net/weblog/software/vc/subversion/lord-on-svn.html स्रोतफ्रॉग: तोड़फोड़ पर टॉम लॉर्ड<!-- Bot generated title -->]</रेफरी>

Revision as of 17:16, 1 June 2023

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

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

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

उदाहरण

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

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

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

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

यह भी देखें

संदर्भ

  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"