I'm interested in Domain Specific Languagess design and implementation. Much of the DSLs that I know stem from the academic world.
Can you give me some pointers to DSLs that are actually used in the industry ? and that you use on a daily-basis...which are really convenient..
(I'm interested in declarative languages too, but not really xml-based ones...)...
I'd like to establish a (non-exhaustive) list of industry-deployed languages...i know this is huge...
Sometimes, I'm implementing using a General Purpose Language things that could be trivially done using a DSL.
EDIT I'm mainly interested in application-directed DSLs, not small-embedded languages. For instance, SQL matches what I'm looking for but SQL embedded in java does not interest me. Another example of the kind of language i'm looking for is X#
A DSL that's so succesful that it got its own SO tag is the regex language. Specific to the domain of string pattern matching, of course.
Another popular one, but with which I have no experience is VHDL. VHDLs popularity stems from the fact that it's easily converted for use in an FPGA.
[edit] While it's certainly not Turing complete, C's printf() format specifier can be considered as another domain-specific language.
NMake, MSBuild, lex, yacc, bison, flex, TeX, PostScript, XAML, SSIS, Wix
EBNF is probably the most widely-used domain specific language within its domain - a language to describe languages.
Wikipedia suggests that spreadsheet formulas and shell scripts are both domain specific languages. This would make them probably the most wide spread examples.
Awk provides is a domain specific language for the processing of semi structured textual data.
Many of the more powerful unix command line tools in wide spread use such as find and grep could be classed as having a domain specific language (even when limited solely to command line arguments)
I don't know if you want to consider graphical DSLs as well. I'd include
- NORMA, a DSL for conceptual domain modeling, based on Object-Role Modeling notation (ORM2)
- Web Service Software Factory, which uses three DSLs to model web services
Both of the above were created using the DSL Toolkit.
Here is a question I had asked about DSLs written in Ruby: Ruby DSL (Domain Specific Language) repositories, examples
Aside from Ruby DSLs, SQL is a fine example of a very popular DSL, as is AWK.
MEL (Maya Expression Language) is a command line-esque language that AutoDesk Maya uses throughout its entire design. The Maya Ascii file format that scenes can be saved in uses MEL to compose its scenes. The user interface is largely built and controlled using MEL scripts. The expressions you can use to drive channels and attributes on objects are MEL.
I suppose it could technically be considered an embedded language in cases where you're just writing scripts for it. However, without MEL, Maya basically wouldn't exist. No ascii file format, no user interface, etc.
You can write a domain specific language in languages like Boo, but I think the very definition of domain specific indicates that most of the time it will be in a specific industry or even just a single company...
Wikipedia has a good introductory article on this.
This overview has an examples section with some good links.
There are parts of ruby on rails that can be considered domain-specific languages. In particular its language for specifying relational tables.
- Mak Stealth's language for programming charcter behaviors (Do not think it has a name)
- Slang - Goldman Sachs language (I've heard of it but never used it)
- CMS-2 Navy programming language
Google's web search supports some increasingly sophisticated parametrization
You could argue that this is one of the most widely used DSL's if even a small fraction of their userbase ever uses one of them as opposed to the standard list of words.
Erlang was originally a telecom-specific language, although it is now (occasionally) used as a general-purpose language.
The two (not already mentionned) which have impressed me most are:
- OpenSCAD for solid 3D modelling
- TaskJuggler for project management (!)
I'm a big fan of declarative DSLs. Operational DSLs (like Maple, Mathematica and R are nice too, but not that different from conventional langauges).
Tcl is a language that was originally designed to be a framework for building DSLs — providing basic functionality like programmability and I/O while the domain-specific parts were created fresh for each application — and which grew up into a generic scripting language. One of the more widely known Tcl-based DSLs is Expect.
来源:https://stackoverflow.com/questions/1012886/successful-domain-specific-languages-which-one-do-you-use