स्कूप (सॉफ्टवेयर)

From Vigyanwiki

स्कूप या SCOOP (सरल समवर्ती वस्तु उन्मुख प्रोग्रामिंग/ सिंपल कंकररेंट ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग) एफिल (प्रोग्रामिंग भाषा) के लिए डिज़ाइन किया गया एक समवर्ती मॉडल है, जिसकी कल्पना एफिल के निर्माता और डिजाइनर बर्ट्रेंड मेयर ने की है।

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

मॉडल को पहली बार 1990 के दशक की प्रारम्भ में डिजाइन किया गया था और 1993 में एसीएम के संचार में प्रकाशित किया गया था।[1] वस्तु-उन्मुख सॉफ्टवेयर निर्माण पुस्तक के अध्याय 30 में एक अद्यतन संस्करण का वर्णन किया गया था।[2] एफिल सॉफ्टवेयर द्वारा 1995 में एक प्रोटोटाइप कार्यान्वयन विकसित किया गया था। कॉम्पटन और वॉकर का एक लेख[3] स्कूप का एक सिंहावलोकन प्रदान करता है और एक अन्य प्रारंभिक कार्यान्वयन का वर्णन करता है। Nienaltowski, Arslan और Meyer ने 2003 तक मॉडल का विवरण प्रकाशित किया है।[4] ईटीएच ज्यूरिख में सॉफ्टवेयर इंजीनियरिंग के चेयर में स्कूप पर काम जारी है।[5] स्कूप 2011 की प्रारम्भ में एफिलस्टूडियो के मानक भाग के रूप में उपलब्ध हो गया।[6]

तकनीकी सिंहावलोकन

स्कूप कुछ वस्तुओं के संदर्भों को अलग घोषित करने की अनुमति देकर काम करता है। नीचे दिए गए कोड में, एक entity local_inventory एफिल भाषा कीवर्ड निर्दिष्ट करके एक अलग प्रकार के रूप में घोषित किया गया है separate घोषणा में।

    local_inventory: separate INVENTORY

एक अलग ऑब्जेक्ट को स्कूप प्रोसेसर द्वारा नियंत्रित किया जा सकता है जो संदर्भित ऑब्जेक्ट को संभालने वाले प्रोसेसर से भिन्न होता है। एक स्कूप प्रोसेसर नियंत्रण के एक स्वायत्त सूत्र की अमूर्त धारणा है जो एक या अधिक वस्तुओं पर संचालन के निष्पादन को नियंत्रित करता है। स्कूप प्रोसेसर थ्रेड (कंप्यूटिंग), मल्टी-कोर प्रोसेसर, और वितरित कंप्यूटिंग जैसे अंतर्निहित समवर्ती तंत्रों से स्वतंत्र हैं।

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

    item: PRODUCT
        -- Current item
    require
        inventory_has_item: has_item

पारंपरिक, अनुक्रमिक प्रसंस्करण में, कॉल करने का इच्छुक क्लाइंट local_inventory.item यह सुनिश्चित करने के लिए जिम्मेदार होगा कि पूर्व शर्त local_inventory.has_item कॉल करने से पहले रखता है। अगर कॉल करें item जिस राज्य में किया गया था has_item होल्ड नहीं किया, तो कॉल करने वाले को एक पूर्व शर्त उल्लंघन अपवाद होगा।

स्कूप की उपस्थिति में और की पृथकता दी local_inventory, चेक चालू कर रहा है has_item कॉल करने से पहले item विश्वसनीय नहीं होगा। ऐसा इसलिए है क्योंकि राज्य local_inventory चेक किए जाने और उस समय के बीच अन्य स्कूप प्रोसेसर के अनुरोधों द्वारा बदला जा सकता था item कहा जा सकता था।

नतीजतन, जब स्कूप सक्षम होता है, तो पूर्व शर्त has_item एक शुद्धता की स्थिति से बदल दिया जाता है, जो उल्लंघन के मामले में प्रतीक्षा की स्थिति में एक अपवाद का कारण बनेगा। प्रतीक्षा स्थिति के निष्पादन का कारण बनेगी item तक के लिए विलंबित किया जाए has_item रखती है। एफिल सॉफ्टवेयर कार्यान्वयन में, यदि स्कूप सक्षम नहीं है, तो separate कीवर्ड को नजरअंदाज कर दिया जाता है और अनुक्रमिक प्रसंस्करण मान लिया जाता है।

यह भी देखें

  • एफिल (प्रोग्रामिंग भाषा)
  • ऑब्जेक्ट-ओरिएंटेड सॉफ्टवेयर कंस्ट्रक्शन

संदर्भ

  1. Bertrand Meyer: Systematic Concurrent Object-Oriented Programming, in Communications of the ACM, 36, 9, September 1993, pp. 56-80, also available online.
  2. Bertrand Meyer: Object-Oriented Software Construction, 2nd edition, Prentice Hall, 1997
  3. Compton, Michael; Walker, Richard (2002). "A Run-time System for SCOOP". Journal of Object Technology. 1 (3): 119–157. doi:10.5381/jot.2002.1.3.a8.
  4. Nienaltowski, P.; Arslan, V.; Meyer, B. (2003). "Concurrent object-oriented programming on .NET" (PDF). IEE Proceedings - Software. 150 (5): 308. doi:10.1049/ip-sen:20030992.
  5. ETH Zurich, Chair of Software Engineering: SCOOP project page
  6. Eiffel Software: SCOOP: Concurrency for Eiffel

बाहरी संबंध