Domanda

Solo leggendo il wiki (tedesco), il wiki-Articolo sullo sviluppo SW basato su modelli (MDSD).Riassumendo la definizione wiki:

    .
  • mdsd è del principio secco (non ripetere te stesso)
  • MDSD riguarda il design di DSLS (linguaggi specifici del dominio) e generatori
  • La descrizione più concida dei problemi (attraverso il livello superiore di astrazione dei rispettivi DSL) è possibile tramite MDSD.

    Dal momento che conosco e usa la programmazione funzionale dell'ordine superiore mi chiedo, e la mia domanda reale è: MDSD non è altro che un tentativo desparrato di iniettare (una parte di) le caratteristiche potenti di programmazione funzionali di ordine superiore offerte nei linguaggi di programmazione / paradigmi che hanno intrinsecamente le caratteristiche?

    (o ho fraintennato e potrei anche essere usato da MDSD per supportare sostanzialmente la programmazione funzionale di ordine superiore?)

È stato utile?

Soluzione

Preferisco guardarlo dall'altra parte. OOP, MDSD, TDD, Design guidato dal dominio, e i molti altri paradigmi là fuori sono solo che ... paradigmi. Sono modi per esaminare il compito dello sviluppo del software che le persone si sono sviluppate per affrontare le cose che hanno percepito privo di ciò che è arrivato davanti a loro. Si scopre che la programmazione funzionale fa la stessa cosa - dà ai poteri del programmatore di astrazione che non sono eleganti nelle lingue che non hanno funzioni di prima classe. Quindi non direi che MDSD è un tentativo disperato di dare lingue non funzionali funzionali funzionali quanto direi che sono persone che arrivano allo stesso problema da una prospettiva diversa.

Alcune delle risposte a Questa recente è un modo recente di darlo un modo diverso . Shreevatsar dice: "Quasi tutto ciò che puoi fare con i macro che puoi fare con una funzione di ordine superiore". Matthias Benkard dice: "La mancanza di macro è mitigata un po 'più elaborata ... concetti come monade e frecce". Altri commenti echeggiano anche lo stesso tema. Menzi che uno dei principi di MDSD è generatori. I macro sono generatori di tempo di compilazione. Quindi tradurrei le loro affermazioni come argomento che MDSD è intrinsecamente facile nelle lingue funzionali.

Altri suggerimenti

Esiste una grande differenza tra la creazione di un DSL (Domain Specific Language) (FP) e la creazione di un intero gruppo di Domain Object (OOP) (con logica aziendale all'interno gli oggetti).

FP può soffrire degli stessi problemi (e vantaggi) dei linguaggi procedurali: Separazione di comportamento e dati . Le lingue OOP lo scoraggiano. Questa separazione è nota come Anemic Domain Model .

Questa "separazione" può rendere la modifica dei dati molto difficile (e forse anche peggio con un DSL) Vedi il mio post: Gestione delle modifiche incrementali alla modellazione dei dati nella programmazione funzionale

Tuttavia, cambiare comportamento e avere cose apolidi su tutta la linea sono una seccatura con il design OOP Domain Driven. Tuttavia, con cose come AOP ITD e Meta-programmazione questo diventa un problema minore.

Scala e Ruby sono un bell'esempio di una miscela di entrambe le tecniche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top