Pergunta

Fico impressionado com a ambição e criatividade dos esforços de Charles Simonyi para estabelecer o campo da programação intencional, primeiro na Microsoft e depois com sua própria empresa.

O que exatamente é programação intencional

http://en.wikipedia.org/wiki/intentional_programming

Nesta abordagem do software, um programador primeiro constrói uma caixa de ferramentas específica para um determinado domínio do problema (como seguro de vida). Especialistas em domínio, auxiliados pelo programador, descrevem o comportamento pretendido do programa de maneira como você vê é o que você obtém (Wysiwyg) da maneira. Um sistema automatizado usa a descrição do programa e a caixa de ferramentas para gerar o programa final. Alterações sucessivas são feitas apenas no nível Wysiwyg.

Parece ser uma abordagem tão útil e prática para a programação, potencialmente contornando muitos dos problemas com as abordagens atuais para o desenvolvimento de software.

Essencialmente, parece facilitar a criação de idiomas específicos de domínio por não programadores (analistas de negócios/sistemas), mas em um estágio muito mais próximo da implementação da vida real do que a UML poderia fornecer. Ele diz que será concluído eventualmente, mas ainda não está lá (quase 15 anos depois).

O DSLS executa a gama de motores simples de regra de 5 linhas a aplicativos complexos, como o Ruby on Rails. Por isso, imagino que o atraso na liberação dele tem a ver com o fato de ele estar lidando com a simplificação de um nível muito mais alto de abstração, porque ele precisa permitir essencialmente o encapsulamento de todas as línguas de domínio ao mesmo tempo.

Então, minha pergunta é

(a) se Antlr Poderia ser uma alternativa à programação intencional - embora talvez uma alternativa menos fácil de usar, que requer a intervenção de programadores, em vez de permitir que analistas de negócios gerem a DSL? Você poderia usar o ANTLR para gerar um DSL como o Ruby on Rails (supondo que ele apoiasse o Ruby como uma saída - o que eu acho que não)? O que isso não pode fazer? Além disso, não entendo por que é chamado de "analisador de idiomas" em vez de um "gerador de idiomas" - já que este descreve para que é usado enquanto o primeiro descreve como ele atinge seu resultado final.

e

(b) Se o ANTLR for diferente da programação intencional, existe algo semelhante à programação intencional?

Foi útil?

Solução

Eu não sou um especialista nisso, então trate com uma grande pitada de sal. No entanto...

O próprio ANTLR não é um gerador DSL, embora possa ser usado para criar código que interpreta DSLs. É um gerador de pastores - mas o gerador DSL teria que criar o que o ANTLR gera um analisador.

Outras dicas

Em resposta à parte B), três sistemas que funcionam em um espaço semelhante são:

Cada um desses produtos tem pontos fortes e fracos diferentes, mas todos se enquadram na categoria de Bancadas de trabalho do idioma. O Workbench intencional do software intencional é possivelmente o produto mais ambicioso nessa categoria até o momento, mas também geralmente não está disponível.

MPS e XText são produtos gratuitos e de código aberto. A metacase é a mais madura e é um produto comercial. Todos eles têm uma curva íngreme de aprendizado.

Antlr é apenas um gerador de pastores. Em qualquer DSL não trivial, a redação do analisador é inferior a 50% do esforço gasto na implementação da DSL. O gerador/cronograma/cronograma do avaliador/regra do mecanismo/código ou qualquer outra coisa que seu DSL faça, provavelmente requer mais trabalho e não pode ser gerado como um analisador.

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