Pergunta

Acabei de ler o (alemão) Wiki-Artigo sobre Model-Driven SW-Development (MDSD).Resumindo a Definição de Wiki:

  • MDSD é sobre o princípio DRY (não se repita)
  • MDSD é sobre o design de DSLs (linguagens específicas de domínio) e geradores
  • Uma descrição mais concisa dos problemas (por meio do nível mais alto de abstração das respectivas DSLs) é possível por meio do MDSD.

Como conheço e uso programação funcional de ordem superior, me pergunto, e minha pergunta real é: O MDSD não passa de uma tentativa desesperada de injetar (uma parte) os recursos poderosos que a programação funcional de ordem superior oferece em linguagens / paradigmas de programação que inerentemente carecem desses recursos?

(Ou eu não entendi direito e o MDSD poderia ser usado para oferecer suporte substancial à programação funcional de ordem superior?)

Foi útil?

Solução

Eu prefiro olhar para o outro lado. Oop, MDSD, TDD, design conduzido por domínio, e os muitos outros paradigmas lá fora são apenas ... paradigmas. Eles são maneiras de olhar para a tarefa do desenvolvimento de software que as pessoas se desenvolveram para resolver as coisas que perceberam faltando em tudo o que vieram diante deles. Acontece que a programação funcional faz a mesma coisa - dá aos poderes do programador de abstração que não são elegantes em idiomas que não têm funções de primeira classe. Então eu não diria que o MDSD é uma tentativa desesperada de fornecer as características funcionais não funcionais, tanto quanto eu diria que é que as pessoas vêm com o mesmo problema de uma perspectiva diferente.

Algumas das respostas para Esta Recentes, então a pergunta tenha uma maneira diferente de dizer isso . Shreevatsar diz: "Quase tudo o que você pode fazer com macros você pode fazer com uma função de ordem superior". Matthias Benkard diz: "A falta de macros é mitigada um pouco mais elaborada ... conceitos como Monads e flechas". Outros comentários também ecoam o mesmo tema. Você menciona que um dos princípios de MDSD é geradores. Macros são geradores de tempo de compilação. Então eu traduziria suas declarações como um argumento de que MDSD é inerentemente fácil em idiomas funcionais.

Outras dicas

Há uma grande diferença entre fazer um dsl (idioma específico do domínio) (FP) e criando um monte inteiro de objetos de domínio (OOP) (com lógica de negócios dentro os objetos).

FP pode sofrer o mesmo problema (e vantagens) que os idiomas processuais fazem: separação de comportamento e dados . Oop idiomas desencorajam isso. Esta separação é conhecida como a modelo de domínio anêmico .

Esta "separação" pode tornar a alteração de seus dados muito difíceis (e talvez ainda pior com um DSL) ver o meu post: Manipulação de alterações de modelagem de dados incrementais na programação funcional

No entanto, no comportamento de mudança do lado e ter as coisas apátridas em todo o quadro são a dor na bunda com o projeto acionado por domínio OOP. No entanto, com coisas como oop itd's , e meta-programação isso se torna menos um problema.

Scala e Ruby são bom exemplo de uma mistura de ambas as técnicas.

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