मैं एसओ भाई-बहनों के बीच एक बेहतर जगह के बारे में सोच भी नहीं सकता। मूल रूप से मैं पूछना चाहता था "क्या अजगर एक शुद्ध ऊ भाषा है?" लेकिन परेशानियों और कुछ प्रकार की परेशानी को देखते हुए लोग अनुभव करते हैं कि जिस शब्द को मैंने शब्द के लिए स्पष्ट परिभाषा प्राप्त करने के साथ शुरू करने का फैसला किया है।
डॉ। एलन के द्वारा पत्राचार के साथ शुरू करना उचित होगा , जिन्होंने शब्द को गढ़ा है (कोशिकाओं या अन्य जीवित वस्तुओं के लिए जैविक सादृश्य में प्रेरणा को नोट करें)।
कार्य के लिए निम्नलिखित तरीके हैं:
- प्रोग्रामिंग भाषाओं को सूचीबद्ध करके एक तुलनात्मक विश्लेषण दें, जो (या ऐसा करने में विफल) प्रदर्शन को परिभाषित करने के लिए कुछ गुण अद्वितीय और पर्याप्त हो सकते हैं (हालांकि स्मॉलटाक, स्काला,
जावा, और इतने पर - संभव उदाहरण हैं लेकिन IMO इस तरह से लगता है कि वास्तव में पूर्ण नहीं है और न ही उपयोगी ) - एक औपचारिक परिभाषा दें (या इसके करीब, जैसे अधिक अकादमिक या गणितीय शैली में)।
- एक दार्शनिक परिभाषा दें जो पूरी तरह से ठोस भाषा या एक प्राथमिक प्रोग्रामिंग अनुभव के शब्दार्थ संदर्भ पर निर्भर करेगा (समुदाय द्वारा सफल स्पष्टीकरण का कुछ मौका होना चाहिए)।
मेरा वर्तमान संस्करण: "यदि एक निश्चित प्रोग्रामिंग ( औपचारिक ) भाषा जो ( व्याकरणिक रूप से ) ऑपरेशंस और ऑपरेंड्स के बीच अंतर कर सकती है और साथ ही प्रत्येक ऑपरेंड के प्रकार के बारे में अनुमान लगा सकती है कि क्या यह प्रकार एक ऑब्जेक्ट है (OOP के अर्थ में) या नहीं तो हम कॉल करते हैं इस तरह की भाषा जब तक एक ओओ-भाषा है, तब तक इस भाषा में कम से कम एक प्रकार है जो एक वस्तु है। अंत में, यदि सभी प्रकार की भाषा भी ऑब्जेक्ट हैं तो हम ऐसी भाषा को शुद्ध (मजबूत) ओओ-भाषा के रूप में परिभाषित करते हैं। "
इसके किसी भी संभावित सुधार की सराहना करेंगे। जैसा कि आप देख सकते हैं कि मैंने केवल "ऑब्जेक्ट" शब्द पर निर्भर परिभाषा बनाई है (अक्सर वस्तुओं के वर्ग के रूप में पूरी तरह से संदर्भित)।
[संपादित करें]
इसके अलावा, मैं टाइप भाषाओं में एक प्रकार की धारणा (सौभाग्य से अच्छी तरह से समझी गई) धारणा का उपयोग करता हूं । डेटा टाइप प्रोग्रामिंग या टाइप ओरिएंटेड प्रोग्रामिंग केवल एक वाक्यात्मक व्याख्या (प्रोग्राम टेक्स्ट का नहीं है, अर्थात शाब्दिक और डेटा चर के कुछ मूल्यों का इलाज कैसे किया जाए - कुछ ऐसा जो टाइप सुरक्षा में विकसित होता है) लेकिन इसे भाषा व्याकरण के लिए जिम्मेदार ठहराया जा सकता है और औपचारिक तरीके से अध्ययन किया जा सकता है। (गणितीय तर्क का उपयोग करते हुए) तथाकथित प्रकार की प्रणालियों के रूप में । ध्यान दें कि विशेष प्रकार की प्रणाली के लिए तथाकथित सार्वभौमिक प्रकार की आवश्यकता होती है, ओओ भाषा की शुद्धता को परिभाषित करने के तरीकों में से एक है (इस शब्दार्थ का विस्तार करने के तरीके हैं)।
एनबी
कैसे जवाब दें :
- यह मदद करता है यदि आप एक पुस्तक या एक संदर्भ निर्दिष्ट करते हैं जो शब्दावली और अवधारणाओं की आपकी समझ का समर्थन करता है / व्याख्या करता है (आमतौर पर एक अच्छी परिभाषा कवर करती है या प्राथमिक को छोड़कर सभी मिश्रित अवधारणाओं को संदर्भित करती है)।
- यदि संभव हो तो अपने उत्तर / परिभाषा की एक इंडेंट श्रेणी का संकेत दें यदि यह अन्यथा स्पष्ट नहीं है (ऊपर देखें: 1 - भाषा उदाहरण के अनुसार, 2 - गणितीय तर्क, 3 - तकनीकी विवरण और प्रोग्रामिंग दर्शन)
- वर्गीकरण महत्वपूर्ण है (और इसलिए भी क्योंकि शुद्ध-ऊ शब्द को OO शब्द में शामिल किया गया है), अन्य अच्छी तरह से ज्ञात कार्यप्रणाली से OO प्रतिमान के तत्वों को अनमिक्स करने का प्रयास करते हुए (और किसी भी तरह से भ्रमित / ओवरलैप नहीं करते हैं, उदाहरण के लिए, आमतौर पर मॉड्यूलर प्रोग्रामिंग के तत्वों को कवर किया जा सकता है) / OO प्रोग्रामिंग के साथ सन्निहित): OOP को अलग करने का प्रयास करें (जिसमें शामिल है या हो रहा है) कार्यात्मक प्रोग्रामिंग, तार्किक प्रोग्रामिंग (विशेष रूप से विशेष रूप से विशिष्ट), Abstarct डेटा प्रकार (ADT), मॉड्यूलर, मेटाप्रोग्रामिंग (जेनरिक और LISP के मैक्रोफेन्सर-टाइम), अनुबंध (उदाहरण के लिए एफिल), पहलू-उन्मुख (एओ), (डिक्स्ट्रक्टिव और कार्यात्मक वर्गीकरण के बीच अंतर के साथ-साथ दिज्क्स्ट्रा की संरचित की ऐतिहासिक परिभाषाएं स्पष्ट हैं)
औपचारिक परिभाषा देने में कठिनाई होने पर : आश्चर्यजनक रूप से यह एक निश्चित तार्किक (औपचारिक) प्रणाली के रूप में ओओपी का गणितीय विवरण देना बहुत आसान है (सबसे अधिक संभावना प्रकार आधारित) और एक के बाद एक अवधारणा को परिभाषित करना। यहां तक कि केवल औपचारिक मनोरंजन या व्यायाम कीतुलना में सुरक्षा जाँच या नई भाषा डिज़ाइन पहलुओं को टाइप करने के लिए उस औपचारिकता को लागू करके कुछ अधिक व्यावहारिक करने की कोशिश भी की जा सकती है(यह भी अंतर्ज्ञानवादी प्रकार के सिद्धांत में ओओपी का निरूपण, आश्रित प्रकार , स्वतंत्र रूप से, एफएबी औपचारिकता में लंबोदर कलन के रूप में) और सिर्फ श्रेणी सिद्धांत का उपयोग करके)। यहां एक मुख्य बिंदु यह है कि अनिश्चित रूप सेइस तरह के योगों की ओओएम (कंप्यूटर इंजीनियरिंग में) शुरुआत में अधूरी समझ के कारण IMO दृढ़ता से पक्षपाती (त्रुटिपूर्ण) हो जाता है और अंत में लगभग दुर्गम हो जाता है (इस तरह शायद ही प्रोग्रामिंग दुनिया में पीछे की ओर योगदान होता है - शायद कुछ प्रतिशत को छोड़कर औपचारिक दुनिया से आवेदन प्राप्त होने से लोकप्रिय भाषाओं में एकीकृत )।
तो, हां, केवल परिभाषा ही नहीं, बल्कि "अच्छी" परिभाषा देना मुश्किल है। लेकिन मैं आपके अनुभव और प्रत्यक्ष भागीदारी के कारण यहां यह पूछने में सकारात्मक हूं।