Talk:Domain-specific language

Early examples?
I my mind, the first example of a domain-specific language is "blocks world" - an AI experiment that created a small language specific to a very particular domain. I am reasonably certain I heard this term used in the late 1970's or early 1980's ... but finding reference material on the web from pre-web time is more difficult. (Or was the term used only verbally? Impossible to prove.) I read the description of "blocks world" as an undergraduate in the late-1970's.

Lisp was a primary platform for domain-specific languages in that time. (AI experiments, Emacs Lisp, AutoLisp in AutoCAD - are early examples.) We used what amounted to a domain-specific language to at UCI in a research project add a pretty-printer to an Ada development environment the group was building, and got a great deal done with a small amount of effort. That was a strong early lesson (in the late 1970's).

I was acquainted with the notion of domain-specific languages from school (late 1970's), but it is possible I heard the term slightly later. Two questions:


 * 1) When was "domain specific" first used to describe a language?
 * 2) What are the early examples of clearly domain-specific languages? (I think we are looking at the 1970's.)  — Preceding unsigned comment added by Pbannister (talk • contribs) 02:36, 1 November 2016 (UTC)

Martin Fowler's Definitions
Please note that Martin Fowler has his own definition of a Domain Specific Language. This is especially true when it comes the concept of EDSLs. There should be a clear distinction between MF's definition and the "classical" definition.


 * Note above comment not mine, and was somehow entered in here without direct ~ or bot signatures.


 * In comment to what it said, I believe this entire page to be a wikipedia made concept. Domain specific languages simply are a *very* loosely referred to term (take a close look at the lack of citations!) and frankly this is another attempt by contributors to invent something out of whole-cloth.  Such things have a circularly fulfilling role: People make the absurd decision to quote wikipedia in various places with such terms, and it then gains solidity because those online usages END UP IN WIKIPEDIA AS CITATIONS.Tgm1024 (talk) 05:35, 7 April 2019 (UTC)

J Henry
The statement regarding the legend of John Henry is unclear. Could someone clarify this? Bsmntbombdood 21:59, 6 May 2006 (UTC)

Graphviz
I feel Graphviz is a package of graph rendering tools including dotty, which renders graphs specified in DOT Language. -- Sundar 09:35, Apr 2, 2004 (UTC)


 * And? It's definately a DSL. Wouter Lievens 15:16, 3 Apr 2005 (UTC)


 * You've answered my query exactly an year and a day later! My point then was Graphviz is more a package than a DSL. -- 05:09, Apr 4, 2005 (UTC)


 * Oh, now I understand. Yeah I guess you may be right, the only language involved is the DOT Language, and the Graphviz packave is just "an implementation". Wouter Lievens 08:51, 4 Apr 2005 (UTC)


 * But nobody took the trouble to fix this in the last three years. Oh well.  Rp (talk) 19:55, 24 April 2008 (UTC)

One thing this article doesn't mention that I think it should is that DSLs need not be text-based. Good examples of this is a GUI builder for VB, and a circuit builder. Both have a WYSIWYG editor and semantics. Furthermore, both of these have textual representations but are easier to create graphically. --Andrew Eisenberg 00:58, 6 May 2005 (UTC)


 * I agree with you that DSLs need not to be text-based and it should be mentioned. If you look at Visual programming language article, there are some domain-specific visual languages (DSVL) that could be included in DSLs article as some examples. --Pablo.barrientos 05:21, 20 March 2006 (UTC)


 * At least the redirect is fixed now. Rp (talk) 19:55, 24 April 2008 (UTC)

Embedded
I think there is some need for explaining that the drawbacks of pure DSLs can be compensated by embedding the DSL into a GPL.


 * I agree. I actually introduced a paragraph to explain this, and it was removed without any explanation (in fact, the explanation seems to be about something else).  I am new to Wikipedia, so I do not know whether that was simply a mistake.  Here is my edit:

http://en.wikipedia.org/w/index.php?title=Little_languages&diff=prev&oldid=29551180
 * Perhaps my edit should be reintroduced, but as I am new to Wikipedia. I will instead point it out here for others to comment on.

This makes the access to lower abstraction levels possible, while keeping the benefits of abstraction level stacking.

EDSLs also allow to mix DSLs easily.

Examples are macro packages for C/C++ or rule based syntax transformations in Dylan/Scheme. Of course procedural macro facilities provide the greatest power (Common Lisp has this).

DSL != Macros
While macros can be used to implement DSLs; DSLs and macros are not the same. --EngineerScotty 20:02, 7 December 2005 (UTC)

General-purpose programming language merger
I propose general-purpose programming language be merged to this article, because it discusses the same topic, just from the other direction. That article is minor and largely overlaps with this article and programming language. Most if not all of the article to be merged is already said on these two articles. --TuukkaH 19:52, 17 February 2006 (UTC)
 * I would have to disagree. Although, the two articles, as they currently stand, are overlapping, they are two truly different concepts.  Is there any precedent for merging two opposite terms into one article?  If you can show me examples of this, I'll change my mind.  Otherwise, I suggest that the overlapping parts of the two articles be dis-entangled.  --Andrew Eisenberg 05:48, 20 February 2006 (UTC)


 * Thanks for asking, please see Wikipedia is not a dictionary, and Merging and moving pages: "There are two or more pages on related subjects that have a large overlap. Wikipedia is not a dictionary; there doesn't need to be a separate entry for every concept in the universe. For example, "Flammable" and "Non-flammable" can both be explained in an article on Flammability." So different concepts (as opposed to orthogonal concepts) can easily go in the same article if they belong to the same topic whose shades of gray can be discussed in one article. I think you can imagine if we have "History of programming languages" and "History of domain-specific languages" we must have covered "History of general-purpose programming languages" pretty well already. --TuukkaH 07:23, 20 February 2006 (UTC)


 * OK, you've convinced me. Now I understand wikipedia's policy on this and I think the merger should go ahead.  --Andrew Eisenberg 18:37, 24 February 2006 (UTC)


 * I disagree still. The two are like apples and oranges.  You would not merge the apples page into the oranges page... instead you would merge both into the fruit page.  However, I believe that both of these articles are good enough subjects to stand on their own and should not be merged into the programming language page.  Much the same way you would not want to merge the apple and orange pages into the fruit page.  -O


 * It would be beneficial if you could explain why these two articles are like apples and oranges to you? My argument was these are more like apples and non-apples. --TuukkaH 21:58, 6 March 2006 (UTC)


 * Well, yeah, if you're willing to start calling oranges "non-apples" from now on... oh wait, that's stupid because non-apples is a much larger class than just oranges. Apples and oranges each stand on their own and are two completely different things, just as general-purpose programming languages and domain-specifice languages are two completely different creatures -- to wit, GPL's are implementation languages and DSL's are design languages. If you don't know the difference between design and implementation in programming, then you have no standing in commenting on any of these topics, let alone merging and f'ing up articles here. 76.227.116.162 (talk) 13:11, 18 October 2011 (UTC)

Hi. I think that to merge GPLs and DSLs articles depends on the point of view you see DSLs and the general concept you are looking for. I mean, why don't to merge DSLs article with DSM (domain-specific modeling) and MDA (model-driven architecture) too? They can be seen as different ways of model-based development. I think that to have separated articles is the best choice, and to have a link to the GPLs article is enough (dictionaries have no links!). Don't be angry with the thing I will say, but if we use the argument you give in an extremal way, we could found some day in the future an article that explains everything, starting by the big-bang. We also have to have in mind what is a "good definition"... Wikipedia_is_not_a_dictionary --Pablo.barrientos 05:23, 20 March 2006 (UTC).-


 * No, I'm not proposing any good or even promising two articles to be merged. Domain-Specific Modeling and Model-driven architecture seem to be forming well and should probably be linked to from this article. This article can probably be made into something good in time too. But when you look at General-purpose programming language you see it's a hopeless sub-stub. Now my arguments are against the chances that it could ever become better, because it would just copy Programming language and this article. --TuukkaH 08:39, 18 March 2006 (UTC)


 * I agree entirely. The concept of a general-purpose programming language only becomes meaningful in relation to domain-specific programming. Any explanation of GPLs can only become meaningful in relation to DSLs. It seems to me that General-purpose programming language is just a misplaced attempt to generalize from DSLs back to programming languages as such. Adam 18:27, 23 April 2006 (UTC)


 * Just to beat the point to death, I quote: "a general-purpose language only has this status because it does not include language constructs designed to be used within a specific application domain" from General-purpose programming language. Adam 18:30, 23 April 2006 (UTC)


 * Ok, I went ahead with the merger. There even wasn't really anything to merge, I just bolded the phrase here to acknowledge the redirect. --TuukkaH 09:54, 24 April 2006 (UTC)


 * It's two years later now, and I think the case for merging this article with Domain-specific modeling still stands. Rp (talk) 20:03, 24 April 2008 (UTC)

Programming Languages and Modeling Languages
Not all languages are programming languages. There are also modeling languages. Not all DSLs are DSPL (Domain Specific Programming Languages). The systematic redirection from DSL to DSPL is confusing to many. PL/1 is a GPPL (General Purpose Programming Language). UML is an example of a GPML (General Purpose Modeling Language). There are plenty of DSML (Domain Specific Modeling languages). that are currently been defined in model engineering. Not all of them are executable. (MDE)


 * Now how should we sort this out? So, there are programming languages and there are modelling languages. There are general-purpose languages and there are domain-specific languages. Do we need separate articles for computer programming, programming language, domain-specific programming language, modelling language, domain-specific modelling language, Domain-Specific Modeling, software modelling, or could we start with a couple of well-rounded articles?


 * As a first notice, I would like to point out that a lot of programming stuff redirect here because of the domain-specific programming language vs. general-purpose programming language dichotomy. The title of this article is also domain-specific programming language. Creating little programming languages is an important concept in computer programming, so I would like this article to be centered on that.


 * In a sense, only a Turing-complete programming language can be totally general purpose, and in that light also modelling languages are special-purpose languages limited to modelling. For now, it could make sense to have two articles on modelling: software modelling on one hand, and Domain-Specific Modeling on the other. The former could discuss UML and DSLs etc. as they are applied in software engineering, and the latter could center on the concept of a domain and what's related to its modelling.


 * What do you people think? --TuukkaH 09:54, 24 April 2006 (UTC)


 * I've only seen the term DSL for graphical languages; such languages are usually called specification languages or modelling languages, and are never called programming languages. But they must be treated in this article.  Furthermore, the GraphViz example given is of a textual language that isn't a programming language either.  In short, the rename to "Domain Specific Language" is necessary and I'll simply go ahead with it. Rp (talk) 18:35, 24 April 2008 (UTC)

I'm new to wiki so I'm not sure how to add a new discussion entry. As such i'm piggy-backing on this one since it seems the most related. I would like to suggest that YACC is not a programming language, it is a parser-generator. YACC and other generators use syntax-specific languages, such as BNF. (regards, David Kaplan)

Reference to Software Factories
I think it might be a good idea to reference how Software Factories can be implemented when using a DSL. Ideass? —The preceding unsigned comment was added by SCMcDonnell (talk • contribs) 21:49, 5 December 2006 (UTC).

Very Little Language?
To summarize, an analogy might be useful: a Very Little Language is like a knife, which can be used in thousands of different ways

What is a Very Little Language? Should this be 'scripting language' or something similar? —Preceding unsigned comment added by 86.41.36.254 (talk) 22:09, 1 April 2008 (UTC)
 * Additionally, Little language redirects to this article. I came across this term via the Pic language article. After a quick research, this term (for example) seems to be used by Jon Bentley in both his book More Programming Pearls: Confessions of a Coder and his publication Little Languages in Communications of the ACM, August 1986, Volume 29, Number 8, pp. 711. In his definition, a little language denotes a formal language that is deliberately tailored towards a specific application area - i.e. little language is synonymous to domain-specific language. --Abdull (talk) 21:53, 9 March 2010 (UTC)

Screwed Up Redirect
Domain-specific language (Redirected from General-purpose programming language)

general-purpose programming language in Domain-specific language redirects to Programming paradigm

Shell scripting
Do shell scripting languages like Bash fall under the "domain specific" category. If they do, they'd probably make an excellent example for the introduction. —Preceding unsigned comment added by 128.36.68.99 (talk) 02:25, 14 February 2009 (UTC)

I dont think they do. In my experience scripting languages (including bash) are used either as glue between components (excluding the original use case of [k]sh etc. as an alternative to using a compiled language for writing OS components - one might argue this was an original domain for these languages) or as general-purpose languages (implementing all kinds of business logic without functional assumptions). Of course, whether the second usage is a good idea is highly-dependent on the problem that one is trying to solve. To be honest I think this page would strongly benefit from being rewritten by attempting to define domain at the start (with admission of the vagaries of the term) and move on from there.

217.43.81.139 (talk) 22:21, 19 October 2009 (UTC)TooLazyToImplementMyOwnSuggestionButThisPageSeemsToMissTheBeautyOfDSLsWhichCanOnlyBeAShame

Why is UML presented as an opposite of a DSL? UML is in itself clearly not a DSL. But the UML offers a set of extension mechanisms that can be used to define a graphical DSL. —Preceding unsigned comment added by 132.229.16.173 (talk) 14:50, 11 October 2010 (UTC)


 * 132.229.16.173 178.246.26.132 (talk) 21:08, 20 April 2023 (UTC)

I vehemently disagree that Bash or other shell scripting languages are domain specific. The entire section about shell scripts should be removed. HTML makes webpages, VHDL designs pcbs, what does bash do? Anything. The section states bash is for "data organization", but shell scripts are no more focused on that than anything else. It mentions weaving together little parsing tools like grep and wc, but those listed are a handful out of uncountable millions of tools encompassing literally anything anyone can get a computer to do. And those commands aren't part of bash anyway, bash itself is about starting processes and directing output between them, access to variables, parsing/evaluating conditions, looping flow control, etc, with "convenient" syntax -- smells like a general purpose language to me. Obviously this is a spectrum between general-purpose and domain-specific, but I can't think of anything more general purpose than parsing arbitrary control flow, with arbitrary variables, to perform arbitrary actions, and handle their arbitrary results. If shell scripts are domain-specific it's not clear to me what the domain is, I don't think it's "data organization" just because it has streams and pipes which is a rather general-purpose feature. If anything the domain might be "manipulating unix environments", but what is a general-purpose language than one that "manipulates a computer"? Even if you can make some stretching argument that it technically qualifies as a domain specific language (somehow?), it's a terrible example of one for this article. The whole section is misleading and the one citation just points to an irrelevant definition of 'data'. 24.173.0.66 (talk) 01:27, 11 November 2020 (UTC)

Is UnrealScript really a DSL?
UnrealScript maybe used in the "domain" of game scripting, but it doesn't seem like a DSL to me. It looks like a general purpose programming langauge to me. This is not a DSL.

Fresheneesz (talk) 22:37, 11 May 2012 (UTC)


 * I think people might say something is a DSL if it has constructs "specifically geared toward" some domain. However, general purpose languages also have things that are specifically geared toward specific domains. Those things are called modules. Having specific functions for specific things does not make something a DSL in my book. 209.66.74.34 (talk) 23:27, 29 May 2012 (UTC)

On Unrealscript, quake etc.
Quake 1 is NOT scripted in standard C. Quake C is an interpreted DSL with very simple syntax, based on C. Rather limited and slow, but also easy to learn. Other Id software games, such as quake 3 and Doom 3 also used DSL for scripting. Quake 1 mods are widespread and many are well-known. Total conversion mods existed before engine source code went GPL. Original Team Fortress is a quake mod. Counter strike is a mod of Quake1-based Half Life. Build engine-based FPS games also used DSL for scripting before Unreal as far as I know. Overall, DSLs are widely used in game development for a long time. Most adventure games are programmed with DSLs. Another World, classic action game, is written in DSL. List can be huge. 80.249.84.110 (talk) 21:47, 19 November 2012 (UTC)

Lead sentence specification
I would like to change the lead sentence from:


 * ... domain-specific language (DSL) is a programming language or specification language dedicated to a particular problem domain...

to


 * ... Domain-specific language (DSL) is a specific category of programming languages or specification languages dedicated to a particular problem domain...

In stead of specific category of..., it can also be specific group of... or specific type of... or general type of....

I just made a similar change in the Domain-specific modeling, see here. However, here I want to discuss this change first. The reasons for this change are: I would like to have some feed back on this. -- Mdd (talk) 11:50, 30 November 2012 (UTC)
 * Wikipedia offers series of articles about Domain-specific languages all starting with: XXX is a ... language.
 * This article is not about a specific type of language.
 * This could/should be stipulated in the lead sentence... one way or an other, to make clear this is not about just an other specific language.
 * Support, but keep it simple: I'd say: Domain-specific language (DSL) is a type of programming language ... Jesus Presley (talk) 08:16, 4 December 2012 (UTC)
 * Thanks Jesus Presley, I have implemented your proposal -- Mdd (talk) 12:21, 4 December 2012 (UTC)

DSL Disambiguation
A search for DSL takes you directly to the "Digital Subscriber Line" article. This surprised me; would it make sense to have a disambiguation page for DSL? AmigoNico (talk) 21:07, 28 December 2012 (UTC)

Visual Languages
Perhaps we need more discussion of languages like Marc Davis' Media Streams see  — Preceding unsigned comment added by 64.5.67.75 (talk) 16:29, 10 January 2013 (UTC)

FilterMeister
is FilterMeister really relevant anymore? ---62.23.212.218 (talk) 08:52, 21 August 2013 (UTC)

Configuration files?
Configuration files should perhaps be added as a new subsection under the "Examples" section. Most configuration files are written using a very simple but specific language, i.e. domain specific with the application or system which is being configured being the domain. —Kri (talk) 02:40, 29 August 2015 (UTC)

External links modified
Hello fellow Wikipedians,

I have just modified 1 one external link on Domain-specific language. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
 * Added archive https://web.archive.org/web/20040719135712/http://chacs.nrl.navy.mil:80/publications/CHACS/1998/1998heitmeyer-WIFT.pdf to http://chacs.nrl.navy.mil/publications/CHACS/1998/1998heitmeyer-WIFT.pdf

When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at ).

Cheers.— InternetArchiveBot  (Report bug) 21:52, 14 December 2016 (UTC)