The dichotomy of generic and specific manifests itself in the programming sphere. Domain-specific languages (DSLs) are one of the forms of the manifestations of this dichotomy. Domain-specific languages are just what they are called: domain specific. All programming languages are domain-specific languages when they come into existence, but that changes as they evolve. Domain-specific languages are created to solve problems in a certain area (or more precisely, in a certain domain) but as they gradually evolve to solve problems in several domains, the line that distinguishes them as specific blurs. Thus, such a language transgresses from the specific to the generic. A DSL is a special purpose language, the other extreme of which is a general purpose language, such as Scala and Java. Unfortunately, these general purpose languages have drawbacks, for example, if you want to execute a task on a database, then it is necessary to write a computer program for executing this task using a general purpose language. However, a DSL could be used to perform a number of such tasks on a database. And this is why some experts regard SQL, the structured query language, as a DSL.