DSLs can have both textual and graphical (visual diagrams)
forms. The latter one is popular due to an increasing number of
supporting tools for its creation (e.g. Generic Eclipse Modeling
System, or Microsoft Visual Studio DSL); the former one
usually brings higher productivity. DSLs can be classified as
either internal or external. Internal DSLs are only extensions of
existing general-purpose computer languages. They are sets of
functions, data structures, and conventions applied to existing
languages, such as C++ or Java. On the contrary, external
DSLs are independent languages that have been entirely
designed for their specific purpose. Generally, a DSL
“program” can be viewed as a text file, which is then
interpreted (or compiled) by the corresponding engine or
subsystem. The great advantage of properly-designed DSLs is
that they are both: