2010-04-03 16 views
6

मैं सोच रहा हूं कि डेटा संरचना के प्रारूप और अर्थशास्त्र का मनमाने ढंग से वर्णन करने के लिए कोई घोषणात्मक भाषा मौजूद है, जिसे लक्षित भाषाओं के किसी भी सेट में उस संरचना के विशिष्ट कार्यान्वयन के लिए संकलित किया जा सकता है। यही है, जेनेरिक data definition language की तरह कुछ, लेकिन वैक्टर, सूचियों, पेड़ों, आदि जैसे मनमानी डेटा संरचनाओं और उन संरचनाओं पर संचालन के अर्थशास्त्र का वर्णन करने की दिशा में तैयार किया गया। मैं पूछता हूं क्योंकि मुझे इस अवधारणा के व्यवहार्य कार्यान्वयन के बारे में एक विचार था, और मैं बस सोच रहा हूं कि यह इसके लायक है, और इसके परिणामस्वरूप, चाहे यह पहले किया गया हो।जेनेरिक डेटा स्ट्रक्चर विवरण भाषा

एक और, थोड़ा अधिक अमूर्त प्रश्न: क्या डेटा संरचना (यह क्या करता है) के मानक विनिर्देश और इसके कार्यान्वयन (यह कैसे करता है) के बीच कोई वास्तविक अंतर है? अधिक विशेष रूप से, कार्यान्वयन को आवश्यकताओं को अलग संरचना माना जाना चाहिए?

उत्तर

2

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

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

+0

एक्सएसएलटी वास्तव में एक दिलचस्प दृष्टिकोण है। मैं उसमें देख लूंगा। मुझे यह पूछने का मतलब नहीं था कि क्या समान आवश्यकताओं के लिए अलग-अलग कार्यान्वयन हो सकते हैं; मेरा मतलब है कि एक ही आवश्यकताओं के दो अलग-अलग कार्यान्वयन को अलग-अलग डेटा संरचनाओं के रूप में माना जाना चाहिए। इसका प्रभाव है w.r.t. यह मेटा-भाषा कैसे घोषित हो सकती है और क्या होनी चाहिए। –

2

डायनामिक लॉजिक में उस तरह की चीज के दृष्टिकोण हैं, जो कार्यक्रमों के अर्थशास्त्र को पकड़ने का प्रयास करते हैं। हालांकि, गतिशील तर्क के संदर्भ में अर्थ पूर्व शर्त और पोस्टकंडिशन के मामले में है और सूची के वास्तविक कार्यान्वयन के संबंध में अज्ञेयवादी है।

ये डेटा संरचनाएं मूल रूप से कार्यान्वयन से जुड़ी हैं, क्योंकि एक लिंक्ड सूची और सरणी के बीच एकमात्र अंतर विशेष रूप से स्मृति में कैसे रखा जाता है।

इसके लिए, एक सामान्य डेटा परिभाषा भाषा --- कोई उच्च स्तरीय प्रोग्रामिंग भाषा - सी, सी ++, जावा - जो यह निर्दिष्ट करती है। उनमें से कोई भी दूसरे के रूप में सामान्य है, क्योंकि इस संदर्भ में उनमें से कोई भी दूसरे के लिए संकलित किया जा सकता है।

+0

आपकी मदद के लिए धन्यवाद। मैं केवल इस बिंदु पर आपसे असहमत हूं कि किसी भी उच्च स्तर की भाषा वास्तव में सामान्य डेटा-परिभाषा भाषा का गठन करती है, क्योंकि तर्कसंगत विवरण समान रूप से भिन्न होंगे, भले ही तार्किक विवरण समान हों। –

+1

एक लिंक्ड सूची और एक सरणी विभिन्न संचालन/इंटरफेस का पर्दाफाश करती है। विशेष रूप से, एक सरणी यादृच्छिक पहुंच के साधनों का खुलासा करती है, लेकिन एक लिंक्ड सूची नहीं है। –

3

आपको मैसेजिंग विनिर्देश/डेटा क्रमिकरण भाषाओं जैसे Google के प्रोटोकॉल बफर के साथ-साथ ASN.1 में रुचि हो सकती है। यह आप की तुलना में थोड़ा अलग slant है, लेकिन एक ही नस में।

दोनों संचार के लिए सामान्य संदेश घोषित करने के तरीके हैं। प्रोटोकॉल बफर संदेश चश्मे अलग-अलग भाषाओं में "संकलित" करते हैं, लेकिन केंद्रीय प्रोटोकॉल सुसंगत है। एएसएन.1 में कई अलग-अलग संकलन उपयोगिताएं हैं, साथ ही विभिन्न प्रोटोकॉल प्रस्तुतियां अलग-अलग शाब्दिक कार्यान्वयन के साथ तार्किक रूप से सुसंगत रहती हैं। उदाहरण के लिए एक्सईआर, प्रति बनाम बीईआर देखें।

मुझे एक विनिर्देश भाषा पसंद आएगी जो केवल लॉजिकल मेमोरी स्ट्रक्चर के खिलाफ सरल पैक बाइनरी लेआउट पर ध्यान केंद्रित करेगी। यह हो सकता है कि सादा सी structs इसे व्यक्त करने का सबसे सरल तरीका है। मैंने आशा की थी कि एएसएन.1 के पास आने का कोई तरीका था, लेकिन थोड़ी देर के लिए इसे देखने के बाद, ASN.1 PER करीब है, लेकिन काफी नहीं।

संपादित करें: Apache Thrift और Capn' Proto भी दिलचस्प हो सकता है।

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