Languages for one purpose.
WHAT THEY ARE
Languages designed for a narrow domain rather than general programming.
WHAT EXAMPLES EXIST
Query languages Build definitions Configuration and infrastructure declarations Pattern matching notations Styling languages Hardware description languages
WHY THEY EXIST
A notation fitted to a domain expresses problems in that domain more clearly than a general language.
WHAT THEY PROVIDE
Concise expression Fewer ways to make mistakes Accessibility to domain experts who are not programmers
WHAT THEY COST
Another thing to learn Limits at the edges of the domain Tooling that is usually weaker
WHAT THE RISK IS
A domain language gradually acquiring general programming features, badly.
WHAT THAT LOOKS LIKE
Configuration formats growing conditions, loops and functions.
WHAT TO DO WHEN THAT HAPPENS
Consider whether a general language generating the configuration would serve better.
WHAT TO WEIGH BEFORE CREATING ONE
Almost always, a library in an existing language is a better answer.