A domain specific language (DSL) is a great way of implementing systems focussed on particular areas. You can write everything in your favourite general-purpose language (be it Ruby Java or assembler language). But there are advantages to using a DSL.
A popular example. Cucumber uses a DSL called Gherkin to write its scenarios in for BDD testing. There are a number of advantages in using a DSL like Gherkin to program in rather than a general-purpose language. Firstly the code is much more readable, less obfuscated with special syntax. Secondly the DSL isolates the code from the next layer of software technology. In the case of Gherkin one could run the same scenarios not on a Ruby based Cucumber but on a Perl imitation. Lastly the DSL restricts what can be coded - it is as bad to have 10 ways of doing something as to have none.
In my hobby software development I've devised some homespun DSLs which I find useful. One is for scraping information off webpages. An example of this DSL:
every TD attribute class Class match Class "dataRowL" text Date next TD text Description next TD text Amount if match Amount "\D*(\d+.\d+)\D*" Value write Account Date Description Value "" endif
This code snippet goes through every TD in a HTML page, check for those with class dataRowL, then gets a date, description, and amount from the following TD fields. If the amount is a number then it writes out the details.
These webpages also use a very simple DSL. For illustration here is this webpage as coded:
@title Domain Specific Languages @text A domain specific language (DSL) is a great way of implementing systems focussed on particular areas. You can write everything in your favourite general-purpose language (be it *Ruby* *Java* or assembler language). But there are advantages to using a DSL. A popular example. [Cucumber](https://cucumber.io/) uses a DSL called Gherkin to write its scenarios in for BDD testing. There are a number of advantages in using a DSL like Gherkin to program in rather than a general-purpose language. Firstly the code is much more readable, less obfuscated with special syntax. Secondly the DSL isolates the code from the next layer of software technology. In the case of Gherkin one could run the same scenarios not on a Ruby based Cucumber but on a Perl imitation. Lastly the DSL restricts what can be coded - it is as bad to have 10 ways of doing something as to have none. In my hobby software development I've devised some homespun DSLs which I find useful. One is for scraping information off webpages. An example of this 'DSL': @code every TD attribute class Class match Class "dataRowL" text Date next TD text Description next TD text Amount if match Amount "\D*(\d+.\d+)\D*" Value write Account Date Description Value "" endif @text This code snippet goes through every *TD* in a HTML page, check for those with class "*dataRowL*", then gets a date, description, and amount from the following *TD* fields. If the amount is a number then it writes out the details. These webpages also use a very simple DSL. For illustration here is this webpage as coded: