अपनी पुस्तक "डोमेन-स्पेसिफिक लैंग्वेजेस" में, मार्टिन फोलेवर ने आंतरिक और बाहरी डीएसएल का वर्णन किया है ।
Internal DSL
= मौजूदा प्रोग्रामिंग भाषा का एक उप-समूह है जैसे रूबी / जावा आदि
External DSL
= आप एक वाक्यविन्यास और एक शब्दावली को परिभाषित करते हैं।
एक बाहरी डीएसएल बहुत अधिक अभिव्यंजक हो सकता है, लेकिन एक बाहरी पार्सिंग और कोड पीढ़ी की आवश्यकता हो सकती है।
हालांकि एक आंतरिक डीएसएल को एक अतिरिक्त प्रसंस्करण की आवश्यकता नहीं होती है, लेकिन कभी-कभी गैर-प्रोग्रामिंग डोमेन विशेषज्ञों (जैसे व्यापार विश्लेषकों, परीक्षकों) के लिए समझना मुश्किल होता है।
अपने प्रकार के DSL को चुनते समय, यह विश्लेषण करना महत्वपूर्ण है कि इसके उपयोगकर्ता कौन हैं। यदि वे ज्यादातर गैर-तकनीकी लोग हैं, तो एक बाहरी DSL एक बेहतर विकल्प हो सकता है। अनुभवी प्रोग्रामर की एक छोटी टीम के लिए एक आंतरिक डीएसएल को चुना जा सकता है, अगर वे जिस प्रोग्रामिंग भाषा का उपयोग करते हैं वह पर्याप्त अभिव्यंजक है।