2010-07-17 16 views
10

मुझे आश्चर्य है कि जावा ऑर्थोगोनल है या नहीं, और यदि हां, तो इसकी विशेषताएं कौन हैं जो इसे ऑर्थोगोनल बनाती हैं। आप कैसे निर्धारित कर सकते हैं कि कोई भाषा ऑर्थोगोनल है या नहीं? उदाहरण के लिए, मैंने कुछ वेबसाइट पर पाया कि सी ++ ऑर्थोगोनल नहीं है, लेकिन कोई स्पष्टीकरण नहीं, क्यों नहीं। ऑर्थोगोनल कौन सी अन्य भाषाएं हैं? कृपया मेरी मदद करें, क्योंकि इस विषय के बारे में इंटरनेट पर लगभग कोई जानकारी नहीं है।जावा ऑर्थोगोनल है?

धन्यवाद

+13

कृपया ऑर्थोगोनल की अपनी इच्छित परिभाषा के लिए सीधे स्पष्टीकरण या लिंक दें। –

+0

ऑर्थोगोनैलिटी शायद ही कभी (यदि कभी है) एक बूलियन ("एक्स एक्स ऑर्थोगोनल?") है (लेकिन आमतौर पर तुलनात्मक) डिग्री ("एक्स वाई से अधिक ऑर्थोगोनल है)" –

+1

लेकिन प्रोग्रामिंग भाषाएं रैखिक भी हो सकती हैं? – mvds

उत्तर

2

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

+1

दुर्लभ होने पर, लोग प्रोग्रामिंग भाषाओं में भी शब्द लागू करते हैं। –

24

यूनिक्स प्रोग्रामिंग की कला, अध्याय 4. प्रतिरूपकता ओर्थोगोनालिटी, पेज 89:

ओर्थोगोनालिटी

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

भाषा उपयोगितावाद, अध्याय 6, पेज प्रोग्रामिंग 228:

ओर्थोगोनालिटी मतलब यह है कि सुविधाओं किसी भी संयोजन में इस्तेमाल किया जा सकता, कि संयोजन सब समझ बनाने, और कहा कि किसी दिए गए फीचर का अर्थ संगत, अन्य सुविधाओं के बावजूद है, जिनके साथ यह संयुक्त है।

लिस्प पर, 5.2 ओर्थोगोनालिटी:

एक ओर्थोगोनल भाषा है जो में आप अलग अलग तरीकों का एक बहुत में ऑपरेटरों की छोटी संख्या के संयोजन के द्वारा एक बहुत व्यक्त कर सकते है।


मुझे लगता है कि एक ओर्थोगोनल प्रोग्रामिंग भाषा एक जहां इसकी सुविधाओं में से प्रत्येक में कम से कम या कोई साइड इफेक्ट है हो सकता है, तो वे कैसे कि उपयोग अन्य सुविधाओं को प्रभावित करेगा के बारे में सोच के बिना इस्तेमाल किया जा सकता। मैं इसे ऑर्थोगोनल एपीआई की परिभाषा से उधार लेता हूं।

जावा में आपको उदाहरण के लिए मूल्यांकन करना होगा यदि कीवर्ड/संरचनाओं का संयोजन होता है जो पहचानकर्ता पर एक साथ उपयोग किए जाने पर एक दूसरे को प्रभावित कर सकता है।उदाहरण के लिए जब public और static एक विधि को लागू करने से, वे एक दूसरे के साथ हस्तक्षेप नहीं है, इसलिए इन दो ओर्थोगोनल (क्या अलावा कीवर्ड क्या करने का इरादा है कोई साइड इफेक्ट)

आप क्या करना है कि सभी के लिए होगा रहे हैं ऑर्थोगोनलिटी साबित करने के लिए इसकी विशेषताएं। यह इसके बारे में जाने का एक तरीका है। मुझे नहीं लगता कि एक स्पष्ट कट या इस मामले में ऑर्थोगोनल नहीं है।

+0

हां, मैं आम तौर पर ऑर्थोगोनलिटी को समझता हूं, लेकिन मैं स्पष्टीकरण नहीं दे सकता कि क्यों सी ++ को ऑर्थोगोनैलिटी को नियोजित नहीं किया जाता है, और आप इसका विश्लेषण कैसे कर सकते हैं। मेरा मतलब है .. मैं यह नहीं कह सकता .. "हाँ .. जावा दयालु ऑर्थोगोनल है क्योंकि सार्वजनिक और स्थिर किसी भी समस्या के बिना एक साथ जाते हैं"। मैं इन भाषाओं में कुछ और सामान्य खोजने की कोशिश करता हूं और ऐसा कुछ भी नहीं है जिसके बारे में मैं सोच सकता हूं और इंटरनेट पर कोई जानकारी नहीं है। – mbc

+1

मैंने एक उदाहरण के रूप में प्रदान किया है कि आप केवल दो विशेषताओं को नहीं चुन सकते हैं, आपको ऑर्थोगोनलिटी साबित करने के लिए अपनी सभी सुविधाओं के साथ ऐसा करना होगा। यह इसके बारे में जाने का एक तरीका है। मुझे portal.acm.org पर दो पेपर मिले, एक सामान्य प्रोग्रामिंग भाषा ऑर्थोगोनलिटी पर और एक सी ++ ऑर्थोगोनलिटी पर। मुझे नहीं लगता कि इस मामले में स्पष्ट कट * है * * * * ऑर्थोगोनल नहीं है। – bakkal

2

शब्द ऑर्थोगोनल प्रोग्रामिंग भाषा का प्रयोग असामान्य है। आमतौर पर, कंप्यूटर विज्ञान में आप वास्तव में orthogonal instruction-sets के बारे में बात कर रहे हैं। हालांकि, अगर हम किसी भाषा के व्याकरण के लिए अर्थ का विस्तार करना चाहते हैं:

"... जिसका अर्थ है [भाषा] में अपेक्षाकृत कम बुनियादी संरचनाएं हैं और उन संरचनाओं के संयोजन के लिए नियमों का एक सेट है। प्रत्येक निर्माण एक प्रकार इसके साथ जुड़े है और वहाँ उन प्रकार पर कोई प्रतिबंध नहीं कर रहे हैं .... "see ALGOL

तो हम मान सकते हैं कि अगर भाषा में नहीं सभी निर्देशों का सभी डेटाटाइप्स पर काम कर सकते गैर ओर्थोगोनालिटी निकलेगा। हालांकि इसका मतलब यह नहीं है कि बातचीत सच है, यह कहना है कि सभी भाषा निर्देश सभी डेटा प्रकारों पर काम करते हैं, इसका मतलब यह नहीं है कि भाषा ऑर्थोगोनल है।

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

सबसे सरल उदाहरण:

for loop; vs. while loop; 
के लिए

और जबकि गैर ओर्थोगोनल हैं।

+0

फिर फिर से कई प्रोग्रामर लूप के लिए और बीच के बीच अर्थपूर्ण अंतर को अनदेखा करते हैं। यह एक मुद्दा है जो सीधे भाषा की ऑर्थोगोनलिटी से संबंधित नहीं है, लेकिन आईएमएचओ एक बहुत बड़ा अंतर्निहित मुद्दा है, जो मूल सार अवधारणाओं में समझ की कमी को दर्शाता है। – Schedler

+0

मैं कहूंगा कि "ओओपी शब्दावली में) (या ओओपी शब्दावली में) के लिए" सुपर "है, या इसमें" सेट्स "के लिए" शामिल हैं) जिसमें लूप को थोड़ी देर के रूप में व्यक्त किया जा सकता है, लेकिन सभी के दौरान लूप को व्यक्त नहीं किया जा सकता है loops के लिए। यह ऑर्थोगोनलिटी को कैसे प्रभावित करता है? मैं विकिपीडिया पर पढ़ रहा हूं, और ऐसा लगता है कि चूंकि लूप के लिए दो तरीके हैं ... मुझे पता नहीं चला। – Thufir

+0

असल में भाषा मूल्यांकन के बारे में बात करते समय इसे सरलता माना जाता है –

1

ऑर्थोगोनलिटी वास्तव में ऐसी भाषा सुविधा नहीं है, भले ही कुछ भाषाओं में ऐसी विशेषताएं हैं जो ऑर्थोगोनैलिटी (जैसे एनोटेशन, अंतर्निहित एओपी, ..) को बढ़ावा देती हैं। जावा में ऑर्थोगोनलिटी के संबंध में: मैंने log4j का उपयोग करके इस बारे में थोड़ा मामला अध्ययन लिखा है: "Orthogonality By Example" - आपको यह उपयोगी मिल सकता है। सी में ओर्थोगोनालिटी की

1

अभाव:

  • एक सरणी को छोड़कर किसी भी डेटा प्रकार शामिल कर सकते हैं void
  • पैरामीटर मूल्य लेकिन सरणी से पारित कर रहे हैं संदर्भ द्वारा पारित कर रहे हैं

एक प्रोग्रामिंग भाषा पर विचार ऑर्थोगोनल यदि:

  1. आदिम निर्माणों की एक अपेक्षाकृत छोटी सेट कि तरीकों डेटा और नियंत्रण संरचनाओं का निर्माण करने की एक अपेक्षाकृत छोटी संख्या में गठजोड़ कर सकते हैं नहीं है

  2. हर संभव संरचना कानूनी

उदाहरण के लिए है 4 के साथ एक भाषा आदिम डेटा प्रकार (Int, Float, Double, Char) और दो
टाइप ऑपरेटर (ऐरे और पॉइंटर) अपेक्षाकृत बड़ी संख्या में डेटा संरचनाएं बना सकते हैं।

तो ऑर्थोगोनलिटी का लाभ भाषा को सरल और नियमित बनाना है क्योंकि कम अपवाद हैं।

संबंधित मुद्दे