Línguas Específicas de Domínio (DSLs) existem desde que estou em computação, mas é difícil encontrar muita informação sobre como trabalhar com elas. As DSLs são pequenas línguas, centradas num aspecto particular de um sistema de software. Não se pode construir um programa inteiro com uma DSL, mas muitas vezes utilizam-se múltiplas DSLs num sistema escrito principalmente numa língua de uso geral.
DSLs vêm em duas formas principais: externa e interna. Uma DSL externa é uma língua que é analisada independentemente da língua de propósito geral do anfitrião: bons exemplos incluem expressões regulares e CSS. As DSLs externas têm uma forte tradição na comunidade Unix. As DSLs internas são uma forma particular de API numa língua de uso geral do anfitrião, frequentemente referida como uma interface fluente. A forma como as bibliotecas zombadoras, como a JMock, definem as expectativas para testes são bons exemplos disso, tal como muitos dos mecanismos utilizados por Ruby on Rails. As DSLs internas também têm uma longa tradição de utilização, particularmente na comunidade Lisp.
Pessoas consideram as DSLs valiosas porque uma DSL bem concebida pode ser muito mais fácil de programar do que uma biblioteca tradicional. Isto melhora a produtividade do programador, que é sempre valiosa. Em particular, pode também melhorar a comunicação com peritos de domínio, que é uma ferramenta importante para enfrentar um dos problemas mais difíceis no desenvolvimento de software. CSS é um excelente exemplo disto, a maioria das pessoas que programam CSS não se consideram programadores. Apesar disto, no entanto, não penso geralmente que os utilizadores finais escrevam directamente em DSLs – é o melhoramento da comunicação que é importante.
Embora as DSLs existam há muito tempo, a falta de conhecimento de como programar com elas é uma barreira significativa – e é exactamente por isso que tenho trabalhado neste livro. Os livros fornecem técnicas para desenvolver tanto DSLs internas como externas, dando-lhe tanto a informação para escolher entre elas como um bom pacote de informação para começar o seu trabalho. Saliento também a importância de colocar uma DSL sobre uma biblioteca, de modo a que normalmente se construam ambos em conjunto. Há também material sobre geração de códigos, que é ocasionalmente uma parte essencial do trabalho com uma DSL.
Like P da EAA este livro é um Livro Duplex, fornecendo tanto uma narrativa para aprender sobre DSLs como um livro de referência para os detalhes, por isso não se assuste com a alta contagem de páginas. Pode obter uma boa compreensão do tópico lendo a secção narrativa (142 páginas) e usar o resto como referência para mergulhar quando precisar.
Cópias electrónicas deste livro estão disponíveis. A Amazon tem uma versão para acender. InformIT tem versões epub e pdf. A Apple tem uma versão epub na ibookstore.