Abstract
Domain specific languages capture the domain knowledge through the constructs of the language, but making a good language takes more than combining a set of domain concepts in some random fashion. Creating a good language requires knowledge not only from the domain but also from the domain of language design. Generic abstraction concepts turn out to be useful for many different domains and thus for domain specific languages. In this chapter we discuss how domain specific languages can benefit from standardized generic languages to cope with abstraction needs. A successful combination will keep the domain specific language simple and its implementation maintainable while the generic language will add expressiveness and structuring means. We give examples of domain specific languages as well as general ones and use the examples to illus-trate our advice on how to make a good language. We share experiences of lan-guage evolution and finally show an example of combining a generic language for variability with a domain specific language for train signaling.