زبان های Domain-Specific یا DSL ها، زبان هایی با هدف مخصوص هستند که برای حل یک رشته مشکلات مخصوص طراحی شده اند. برنامه نویسان زبان های DSL را دوست دارند، زيرا برنامهنویسی موارد خاص با یک زبان DSL که به خوبی طراحی شده باشد، بسیار سادهتر از یک کتابخانه توابع معمولی است و این امر بهرهوری برنامهنویس را بالاتر میبرد. این افزایش بهرهوری همواره برای برنامهنویسان ارزشمند است.
اين زبان ها در قیاس با دیگر زبان ها اگر به درستى انتخاب و به كار برده شوند، میتوانند در حوزه كاربردى خود، كدهاى پيچيده زبان هاى ديگر را به كدهاى ساده و خوانا تبديل كرده، ارتباط مؤثرتر با مشتريان رافراهم كرده، بهره ورى را بالاتر برده و گلوگاه هاى فرآيند كدنويسى را از بين ببرند.
در بیان کاربرد زبانهای DSL در دو فرم کلی ظاهر میشوند. نوع نخست یا DSL های خارجی، زبانهایی هستند که مستقل از زبان چند منظوره میزبان، بررسی و کنترل (parse) میشوند. کدهای CSS و Regular Expressions نمونههای بارز این نوع زبانها هستند. زبانهای DSL خارجی سابقهای طولانی در دنیای یونیکس دارند. در مقابل زبانهای DSL داخلی فرم خاصی از APIها در زبان چندمنظوره میزبان هستند. کتابخانه JMock و بسیاری از مکانیسمهای بهکار رفته در Ruby On Rails از نمونههای این نوع زبانها هستند. این زبانها بهویژه در جامعه برنامهنویسان Lisp از سابقهای طولانی برخوردار است.