दो प्रकार के डीएसएल हैं; बाहरी और एम्बेडेड।
एक बाहरी डीएसएल आपकी मेजबान भाषा से पूरी तरह से अलग है यानी आप इसे भाषा के बाहर लिखते हैं लेकिन आमतौर पर मेजबान भाषा में कोड उत्पन्न करने के लिए उपयोग किया जाता है। इस दृष्टिकोण के लिए, एक्सपीएंड के साथ एक्सटेक्स्ट शायद सबसे अच्छा टूल है क्योंकि एक साधारण व्याकरण फ़ाइल नए डीएसएल के लिए एक पूर्ण ग्रहण आधारित संपादक उत्पन्न करती है और आप वास्तविक जावा कोड उत्पन्न करने के लिए एक्सपीएंड में कोड टेम्पलेट्स का उपयोग कर सकते हैं। XTend और XPand जावा में लिखे गए हैं लेकिन यह आकस्मिक है क्योंकि जब तक आप प्रक्रिया के अंत में जावा कोड के साथ समाप्त होते हैं तब तक उन्हें किसी भी समय लिखा जा सकता है।इस दृष्टिकोण के साथ नकारात्मकता यह है कि किसी भी उचित जटिल समस्या के लिए भाषा काफी जटिल हो जाएगी और व्याकरण में बहुत सारे काम की आवश्यकता होगी और कोड जनरेशन टेम्पलेट्स में भी बहुत कुछ होगा। आप अभिव्यक्ति मूल्यांकन जैसी किसी भी होस्ट भाषा सुविधाओं का उपयोग नहीं कर सकते हैं, इसलिए यदि आपको इसकी आवश्यकता हो तो इन सभी को आपके डीएसएल में पुनर्निर्माण की आवश्यकता है। एक्सटेक्स्ट में जल्द ही एक्सबेस शामिल होगा जो आंशिक भाषा है जिसमें यहां मदद करने के लिए अभिव्यक्तियां शामिल होंगी।
अन्य दृष्टिकोण एक एम्बेडेड डीएसएल है जहां मेजबान भाषा में उच्च स्तरीय डोमेन विशेषताएं व्यक्त की जाती हैं या तो उच्च-क्रम संरचनाएं (जैसे एचओएफ और मोनैड्स) आमतौर पर कार्यात्मक भाषाओं में या मेट्रो-प्रोग्रामिंग सुविधाओं जैसे मैक्रोज़ (उदाहरण के लिए) लिस्प)। जावा में इनमें से कोई भी नहीं है इसलिए डीएसएल काम (या अमूर्त प्रोग्रामिंग के अन्य रूपों) के लिए एक बुरा विकल्प है। स्प्रिंग रू, पीढ़ी का उपयोग कर जावा के लिए मेटा-प्रोग्रामिंग प्रकार की सुविधा प्रदान करता है, इसलिए यह एक विकल्प हो सकता है। यह विफल होने पर, स्कैला शायद सबसे जावा है जैसे कि जेवीएम भाषा जो लोकप्रिय है और इसमें आपकी सुविधाएं हैं।
एंबेडेड डीएसएल आमतौर पर बाहरी डीएसएल की तुलना में अधिक आसान होता है क्योंकि आपके पास मेजबान भाषा का पूरा समर्थन होता है, इसलिए मेरी सिफारिश स्कैला को आजमाएगी।
यह कितना तेज़ होना चाहिए? आपको इसे बनाने की कितनी जल्दी आवश्यकता है? – EnabrenTane
@EnabrenTane - यह बहुत तेजी से नहीं होना चाहिए –
बहुत तेज़ के बारे में क्या? बहुत तेज़ करेंगे? या केवल सुपर फास्ट? जे/के: पी – hhafez