dsl Jetbrains MPS और ग्रहण Xtext के बीच मुख्य अंतर क्या हैं?




eclipse-emf (3)

मेरी राय में जेटब्रेन का एमपीएस पहली बार में सीखना आसान है। आपको xxt में वर्कफ़्लो-फाइल्स जैसी कॉन्फ़िगरेशन फ़ाइलों के साथ काम करने की आवश्यकता नहीं है।

एक मुख्य अंतर यह है कि MPS में आप सीधे मॉडल को संपादित करते हैं और यह मॉडल आपको सिंटैक्स / एडिटर दृश्य में दिखाया जाता है। Xtext में आप सिंटैक्स को संपादित करते हैं और मॉडल जनरेट / पार्स होता है।

मेरी राय में एमपीएस अधिक शक्तिशाली है। आप भाषाओं को बहुत आसान जोड़ सकते हैं और उनका विस्तार कर सकते हैं। प्रोजेक्ट एडिटर्स का एक बड़ा फायदा यह है कि आप जानकारी को छिपा सकते हैं या मॉडल से प्राप्त अतिरिक्त जानकारी दिखा सकते हैं। आप टेबल या ग्राफ़ (MPS 2.1 में आने वाले) जैसे विभिन्न विचारों का भी उपयोग कर सकते हैं।

संस्करण नियंत्रण एमपीएस के साथ किया जा सकता है। एक मर्ज / डिफरेंशियल टूल है जो ट्री-मॉडल पर काम करता है।

मैंने कई परियोजनाओं में एक्लिप्स एक्सटेक्स्ट का उपयोग किया है। मुझे एक Ecore (मेटा) मॉडल पर एक व्याकरण को परिभाषित करने और भयानक ग्रहण प्लगइन संपादक सहित आपके लिए सब कुछ उत्पन्न करने में आसानी थी, लेकिन मैं स्थैतिक क्षेत्रों में हार्ड-वायर्ड सब कुछ के साथ अंतर्निहित EMF ढांचे के साथ काफी असहज था।

हाल ही में मैं Jetbrains ' MPS (मेटा प्रोग्रामिंग सिस्टम) में आया था । यह पूरी तरह से अलग दर्शन पर आधारित है। जबकि Xtext पाठ-आधारित डीएसएल बनाने के लिए है, जो आपके लिए एक पार्सर पैदा करता है (और उन ईओबीजेक्ट्स को तत्काल), एमपीएस-निर्मित भाषा में सीधे मॉडल संरचना को संपादित करता है। अब तक मैं इसे प्राप्त करता हूं।

क्या उन दोनों डीएसएल उपकरणों के साथ किसी को भी अनुभव है कि उनके साथ काम करने के मामले में मुख्य अंतर को इंगित करने के लिए, इरादा मामलों और दर्शकों, जटिलता, सीखने की अवस्था (ईमानदार होने के लिए, एक्सटेक्स का उपयोग शुरू करने के लिए ईएमएफ की हिम्मत के बारे में काफी कुछ जानना चाहिए) , कोड पीढ़ी आदि?


MPS का मुख्य विचार टेक्स्ट आधारित एक के बजाय एक प्रोजेक्ट एडिटर का उपयोग नहीं कर रहा है। यह भाषा की कमनीयता है। उदाहरण के लिए, आप जावा को ट्यूपल्स के साथ बढ़ा सकते हैं, और एक अन्य व्यक्ति async विधि कॉल के साथ जावा का विस्तार कर सकता है। पाठ आधारित टूल (जैसे XText) में, यह सुनिश्चित करना असंभव है कि दो एक्सटेंशन एक साथ अच्छी तरह से काम करते हैं, क्योंकि परिणामस्वरूप व्याकरण अस्पष्ट हो सकता है। एमपीएस इसे संभव बनाता है। आप सिर्फ अपने प्रोजेक्ट में भाषा जोड़ते हैं जैसे आप लाइब्रेरी जोड़ते हैं।


Xtext एक पारंपरिक पार्सर-आधारित दृष्टिकोण है, जो साधारण पाठ्य सामग्री के साथ काम करता है। जिन्हें आपके पसंदीदा कमांड लाइन टूल का उपयोग करके किसी भी संस्करण नियंत्रण प्रणाली के साथ मेल किया, संग्रहीत और तुलना किया जा सकता है और यहां तक ​​कि संपादक के बाहर भी संशोधित किया जा सकता है। यह कसकर एक्लिप्स ईएमएफ में एकीकृत हो जाता है और उपकरणों की एक पूरी गुच्छा के साथ बहुत अच्छी तरह से काम करता है जो आप ग्रहण इको-सिस्टम में पा सकते हैं। हाल ही में, यह "प्रोग्रामिंग भाषा विकास टूलकिट" के कुछ प्रकार में विकसित हुआ (और अभी भी ऐसा कर रहा है) जहां यह आपको सभी प्रकार के अतिरिक्त टूलिंग का समर्थन करने की अनुमति देता है।

दूसरी तरफ एमपीएस एक प्रोजेक्शन-आधारित संपादक के साथ काम करता है जो पर्यावरण के भीतर काम करते समय सिर्फ "दिखता है" पाठ की तरह होता है। अंतर्निहित भंडारण प्रारूप उपकरण-विशिष्ट है (पढ़ें: विशेष कार्यक्रमों के बिना अनुपयोगी) और सादे पाठ फ़ाइलों को पार्स नहीं करता है। यह कुछ महान लाभ प्रदान करता है जैसे कि मनमाने ढंग से लैंगगेज (जैसे जावा के अंदर SQL के अंदर Regex) को एम्बेड करना। टूलचेन मॉडल को मॉडल रूपांतरों के लिए पीढ़ी के रूप में सक्षम बनाता है जो कि संपादक के रूप में-शुरुआत में असामान्य लगता है, लेकिन शक्तिशाली भी हैं।

दोनों उपकरण किसी न किसी तरह से आपको उनकी दुनिया (MPS / Eclipse) में बंद कर रहे हैं। भले ही आप दोनों को बिना सिर के मोड में चला सकते हों, लेकिन कोई भी आसानी से दूसरे आईडीई के अंदर एक्सटेक्स्ट एडिटर लॉन्च नहीं कर सकता है। एमपीएस के लिए भी यही सच है। मेरा तर्क है कि एक्सटेक्स "अधिक खुला" है, क्योंकि यह एक तरफ साधारण पाठ फ़ाइलों के साथ काम करता है और दूसरी ओर स्थापित टूल (ईएमएफ और सामान्य रूप से ग्रहण) के साथ अच्छा खेलता है।

क्या इससे आपके सवाल का जवाब मिलता है? यदि आपके और अधिक विस्तृत प्रश्न हैं, तो मैं आपको अधिक सटीक उत्तर देने का प्रयास करूंगा।