Pergunta

Não foi possível uma DSL ser tão simples como uma API e, portanto, não precisa de um parser? Ou eu estou mal-entendido que uma linguagem específica de domínio é realmente? Eu pensei que se refere a qualquer conjunto organizado de regras para resolver um problema de domínio particular. Uma API que parecem se encaixar nessa definição, certo?

Foi útil?

Solução

Você pode incorporar um DSL dentro de uma linguagem de programação mais geral. Isso é muitas vezes uma boa solução. (Pode-se dizer que este DSL assume a forma de um determinado API).

Você também pode criar uma língua separada, com seu próprio intérprete, para representar os conceitos de seu domínio. Isso tende a ser uma empresa maior, e muitas vezes não é necessário.

Outras dicas

Você está confundindo o conceito com a implementação. A linguagem específica de domínio é qualquer representação de uma ideia que é considerado "próximo" para o domínio do problema, ao invés de ser uma linguagem geral para a descrição de resolver os problemas em geral.

Sim, um DSL pode ser implementado como uma API, que forneceu funções que se refere aos conceitos específicos no domínio do problema, mas uma DSL é igualmente válida quando representado como um arquivo de texto.

The Pragmatic Programmer: From Journeyman para Mestre contém uma boa descrição do DSLs e as circunstâncias em que eles são úteis, com exemplos. Altamente recomendado.

Você ainda teria apenas a semântica da linguagem host.

programação Ex .: funcional em uma linguagem imperativa não funciona. Então você tem um DSL funcional adicionado a esta linguagem imperativa ...

Sim, absolutamente -. A simples API vai fazer muito bem como DSL se o idioma anfitrião tem flexiblity suficiente para apoiá-lo

Ruby é uma linguagem muito bom para tal, sobretudo tendo em conta os parênteses opcionais e outras flexibilidades.

  • Rails é muitas vezes referida como uma DSL para escrever web banco de dados orientado aplicações.

  • Rake é um sistema de construção com uma DSL para escrita (mais inteligentes) makefiles.

Meu próprio OOFILE é um quadro que você pode considerar como uma DSL para escrever banco de dados aplicações em C ++ -. foi inspirado por dBase e faz uso pesado de C ++ sobrecarga de operadores, objetos locais e idiomas de fluxo

Forth é classicamente uma linguagem que borra a linha entre DSL e API como um programa Forth consiste em pouco mais de uma série de palavras separadas por espaço. Provavelmente o exemplo mais impressionante de um DSL Forth é Abundância - A abundância é um diante- linguagem de programação baseada negócio, escrito em BBL Forth. BBL é uma DOS compilador ADIANTE 32 bit. Distribuído como é. Veja as advertências. Isto não é para o fraco hearted. Seria de interesse principalmente para alguém desenvolver software para o terceiro mundo onde você precisa de execução rápida na antiga lata velha computadores XT e AT. Você pode escrever alguns programas de entrada de dados muito sofisticadas com ele que será executado círculos em torno de programas de entrada de dados modernos.

E, claro, um DSL gráfica exigiria nenhuma análise em tudo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top