Esistono flussi di lavoro specifici o schemi di progettazione comunemente usati per creare applicazioni di programmazione funzionale di grandi dimensioni? [chiuso]

13

Ho esplorato Clojure da un po 'di tempo, anche se non l'ho usato su nessun progetto non banale. Fondamentalmente, mi sono appena messo a mio agio con la sintassi e alcuni degli idiomi. Provenendo da un background di OOP, con Clojure che è il primo linguaggio funzionale a cui ho guardato molto, non sono naturalmente a mio agio con il modo funzionale di fare le cose.

Detto questo, ci sono flussi di lavoro specifici o modelli di progettazione comuni nella creazione di applicazioni funzionali di grandi dimensioni? Mi piacerebbe davvero iniziare a utilizzare la programmazione funzionale "per davvero", ma temo che con la mia attuale mancanza di esperienza, si tradurrebbe in un fallimento epico.

La "Gang of Four" è un tale standard per i programmatori OO, ma c'è qualcosa di simile che è più diretto al paradigma funzionale? La maggior parte delle risorse che ho trovato hanno grandi quantità di programmazione, ma non fanno un passo indietro per dare un aspetto più ampio e architettonico.

    
posta Andrew 02.10.2012 - 21:31
fonte

2 risposte

3

I modelli di questo tipo sono di solito i sintomi di un modello sottostante rotto ed inadatto.

OOP è rotto dalla progettazione, non adatto alla maggior parte delle sue applicazioni, quindi esplode con tutti i cosiddetti "pattern". Il modello funzionale è (solo un po ') più flessibile e la necessità di "schemi" non è così ovvia.

Una volta che inizierai ad applicare un approccio orientato alla lingua (naturale per i programmatori funzionali), utilizzando o creando DSL per ogni specifico dominio, scoprirai che nessun pattern viene mostrato, perché utilizzi sempre un modello adeguato per descrivere un problema.

Naturalmente alcuni "pattern" o "ricette" ricorrenti di alto livello sono inevitabili anche nella matematica molto astratta, pulita e pura, ma sono di un tipo diverso e di un diverso livello di astrazione rispetto ai pattern GoF. Troverai utili le monadi, per esempio.

    
risposta data 12.10.2012 - 08:53
fonte
-3

Secondo la mia opinione personale, i modelli di progettazione sono semantici. Ricordo di aver riscritto alcune delle mie vecchie app usando MVC solo per essere sicuro di aver capito lo schema e di averlo pensato. Ma, alla fine, non ho ottenuto nulla da MVC sul mio codice originale.

Tuttavia, se dovessi applicare il mio codice originale a un ambiente di sviluppo più ampio e dire a qualcuno che c'è un problema con questo metodo ... sarebbe difficile per lo sviluppatore rintracciare il problema. TUTTAVIA, se avessi detto che il ContractController era stato messo in gabbia per qualche motivo, avrebbe saputo esattamente da dove cominciare.

I modelli di design sono fantastici ... ma come ho detto, penso che siano semantici!

EDIT: I tipi dell'evangelista mi incastrano. Come mai qualcosa è stato sviluppato senza MVC (o qualche altro modello di design)!

    
risposta data 11.10.2012 - 22:34
fonte