@igor.dejanovic I also want to say thanks for the conversation. In the meantime, I learned a bit more about Fowler’s publications. Of course, it is not enough to argue against his description, but from the very beginning of his introduction to DSL “A Domain-Specific Language (DSL) is a computer language”. Following this, we may say that Polish, Italian, and German - to name only a few - are also computer languages because I know applications, which allow using these languages by computers, for example MS Word. Of course, we can say in this respect that we are using DSLs, and the domains are limited by appropriate country boundaries but what about emigrants, refugees, etc? I like definitions that provide uniformity for all definitions. For example, is the mathematics notation a computer language? The alphabet is strange, but syntax and semantics are well known and widely accepted by many. There was a seminar on converting mathematics to a selected programming language.
I like the term programming language. For me, it is a DSL that is dedicated to implementing algorithms. For example UML - I don’t know any existing compiler that can be used to execute algorithms written in this language, but I know transpilers that can be used to convert UML to C#, Java, for example, and finally the outcome could be merged with a computer program and be executed by a machine (today it is the computer - a binary machine, but tomorrow who knows?).
Again, I try to omit statements like that “to get a feel” because I cannot prove that your feel and my feel are the same or similar (how to measure similarity?). It could lead to talking about different things at the same time. It could also be called academic discussion.
I don’t agree with [quote=“igor.dejanovic, post:3, topic:1662”]
The main advantage of these “languages” is that you can reuse all tools
My point is that if you have different languages it is impossible to use exactly the same tools. For me, the correct is “partially you can use existing tools”. Let me give you an example. Consider xaml (XML-based DSL) self-explaining snipped:
XML .... <Grid> ..... </Grid> ...
The question is What is the
- For XML (language !) it is just an element.
- For my students (perfectly educated on the MSDN) it is a picture rendered as an array on the screen
- For me it is equivalent to new Grid() - new operator and constructor call of the class Grid.
Concluding if the question is about the syntax you may use an XML parser in this case. If the question is about semantics you have to have your own tool to process the meaning of this XML element and create an object that will be rendered on the screen as an array.
If you have two languages there must be something different between them, i.e. alphabet, syntax, or semantics. It doesn’t matter that one language is derived from another one but you are right deriving one language from another one it could make a relief - it partially allows reusability of the knowledge, experience, tools, etc.
I know that there are many programming languages and language flavors. For example, versions of programming languages. Today, working on a video course on information processing I try to define the interface as a language construct, type definition (declaration ?) of C#.
Concluding, my point is that using the internal/external prefix of DSL doesn’t make any relief but deriving one language from another one could be very useful.