|WikiProject Computing||(Rated Start-class, Low-importance)|
- 1 Early examples?
- 2 Martin Fowler's Definitions
- 3 J Henry
- 4 Graphviz
- 5 Embedded
- 6 DSL != Macros
- 7 General-purpose programming language merger
- 8 Programming Languages and Modeling Languages
- 9 Reference to Software Factories
- 10 Very Little Language?
- 11 Screwed Up Redirect
- 12 Shell scripting
- 13 Is UnrealScript really a DSL?
- 14 On Unrealscript, quake etc.
- 15 Lead sentence specification
- 16 DSL Disambiguation
- 17 Visual Languages
- 18 FilterMeister
- 19 Configuration files?
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:
- When was "domain specific" first used to describe a language?
- 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.
- And? It's definately a DSL. Wouter Lievens 15:16, 3 Apr 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)
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)
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:
- 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:Wikipedia is not a dictionary, and Wikipedia: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. 22.214.171.124 (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:Wikipedia_is_not_a_dictionary#Good_definitions --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)
- 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)
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
- 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)
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 126.96.36.199 (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.
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 188.8.131.52 (talk) 14:50, 11 October 2010 (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.
- 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. 184.108.40.206 (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. 220.127.116.11 (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...
- ... 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....
- 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)
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)
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)