O que é uma DSL? Conheça o poder destas linguagens
Uma linguagem específica de um domínio (Domain Specific Language) é uma linguagem destinada a ser utilizada no contexto de um domínio particular. Mas porquê usar uma DSL? Quais são as suas vantagens e desvantagens? Descubra tudo hoje.
Uma DSL não tenta agradar a todos
Enquanto uma linguagem de uso geral (GPL) pode ser utilizada para uma vasta gama de problemas e aplicações empresariais, uma DSL não funciona bem assim.
Em vez disso, é criada para uma esfera limitada de aplicabilidade e utilização, mas é suficientemente poderosa para representar e resolver os problemas e soluções dessa esfera. Um bom exemplo de uma DSL é o HTML. É uma linguagem para o domínio das aplicações Web. Não pode ser utilizada, por exemplo, para calcular números.
O criador de uma GPL não sabe onde a linguagem pode ser utilizada ou os problemas que o utilizador pretende resolver com ela. Por isso, uma GPL é criada com construções genéricas que são potencialmente utilizáveis para qualquer problema, solução, negócio ou necessidade.
Java é uma GPL, uma vez que é utilizada em desktops e dispositivos móveis, incorporada na Web em bancos, finanças, seguros, indústria transformadora, etc.
Porquê usar uma DSL?
O objetivo de uma DSL é captar ou documentar os requisitos e o comportamento de um domínio. A utilização de uma DSL pode ser ainda mais restrita a aspetos específicos do domínio (por exemplo, a negociação de mercadorias no setor financeiro).
As DSLs reúnem as equipas comerciais e técnicas. Por exemplo, os designers e os programadores podem utilizar uma para representar ou conceber uma aplicação.
Uma DSL também pode ser utilizada para gerar código-fonte para um domínio ou problema. No entanto, a geração de código não é considerada obrigatória, uma vez que o seu objetivo principal é o conhecimento do domínio. No entanto, quando é utilizada, a geração de código é uma grande vantagem.
Prós e contras destas linguagens
Do lado positivo, as DSLs são poderosas para capturar os atributos de um domínio. Além disso, como são pequenas, são fáceis de aprender e utilizar. Finalmente, uma DSL oferece uma linguagem para os domain experts e entre estes e os programadores.
Em contrapartida, uma DSL é utilizada apenas no âmbito do domínio e do objetivo pretendidos, e tem uma curva de aprendizagem, embora esta possa não ser muito elevada. Os criadores de DSLs necessitam de conhecimentos do domínio, bem como de conhecimentos de desenvolvimento da linguagem, e raramente as pessoas possuem ambos.
Opções de software para desenvolver DSLs
- Xtext: O Xtext permite o desenvolvimento de DSLs e usa o EMF do Eclipse. Permite a geração de código e tem sido utilizado por vários produtos comerciais open-source para fornecer funções específicas. Pessoalmente, já utilizei esta ferramenta e, apesar da demorada aprendizagem, é bastante flexível e permite-lhe criar a sua primeira DSL tranquilamente.
- MPS da JetBrains: O MPS da JetBrains é um ambiente de desenvolvimento integrado (IDE) para criar DSLs. Chama a si mesmo um editor projecional que armazena um documento como a sua abstract syntax tree (AST). Este conceito também é usado por programas como o Word. O MPS também suporta a geração de código para Java, C, JavaScript e XML.
Leia também: