2015-01-09 16 views
18

Esiste una buona fonte di informazioni (centralizzate) sui modelli di architettura aziendale (a la di Fowler), magari con esempi e casi d'uso e una buona quantità di informazioni pratiche? Ad esempio, ho visto molti dei modelli di progettazione di GoF illustrati brevemente in alcuni post SO e in altri siti, oltre a informazioni pratiche ad essi correlate. Sto chiedendo una risorsa analoga da un paradigma più funzionale orientato alle applicazioni aziendali.Modelli aziendali con programmazione funzionale

Grazie.

+7

Penso che i pattern siano un "odore del linguaggio" - se hai un linguaggio abbastanza espressivo, puoi introdurre l'astrazione in questione e trasformarla in "una cosa" invece di "qualcosa che fai". – Cactus

+3

Si potrebbe voler controllare http://fsharpforfunandprofit.com. Ha un buon materiale su FP con F # nel mondo enterprise. –

risposta

73

Sto chiedendo una risorsa analoga da un paradigma più funzionale orientato alle applicazioni aziendali.

Non c'è alcuna risorsa di cui sono a conoscenza. L'uso aziendale su larga scala della FP moderna è spesso < 10 anni, quindi le risorse tendono ad essere in forma di internet. Inoltre, molte persone evitano il GoF in gran parte irrilevante per FP.

SO rimane la soluzione migliore (ecco un esempio: https://stackoverflow.com/a/3077912/83805). C'è un mercato per un libro di architetture FP, questo è sicuro.


Editoriale

Nella mia esperienza, quasi tutti i disegni cadere nella 'compilatore' o un motivo 'interprete', utilizzando un modello dei dati e delle funzioni che i dati. In altre parole, i domini dei problemi sono rappresentati come strutture algebriche (oggetti come ADT con funzioni su di essi) e le architetture software riguardano la mappatura da un'algebra a un'altra. Questo è il modello di progettazione della "teoria delle categorie" (!)

I nostri tipi di dati algebrici sono il modo migliore per catturare le strutture. Le funzioni sono il modo migliore per trasformare queste strutture o mapparle a nuovi tipi di strutture. E ci sono molte ricerche sulla scrittura di compilatori e interpreti che rendano queste cose facili. È possibile implementare la maggior parte dei sistemi scrivendo un compilatore (o interprete). Quindi impara a scrivere compilatori.

È davvero sorprendente quante cose cadono come interpreti o compilatori, quando si inizia a cercare questi problemi software "categorici". Cose come gli MVC cadono come interpreti. Un sacco di software aziendale (data munging) diventa parser + analisi + pretty printer - cioè un compilatore. Forse è ovvio che le architetture (vale a dire come incollare i componenti) riguardano davvero algebre e categorie.

Ovviamente si tratta di architetture di alto livello. Cose di basso livello, come il modo migliore per implementare un sistema di logging o il modo migliore per cablare componenti costosi, come passare ambienti, replay/rollback hanno astrazioni particolari che è possibile riutilizzare sono un problema diverso. Spesso monoidi/monadi/applicativi o altre nozioni computazionali catturate come librerie.

Ancora una volta, andiamo alla vista algebrica per trovare la struttura che meglio cattura il dominio del problema.

+37

Vagamente voglio scrivere un libro "Teoria delle categorie per gli architetti del software" –

+4

Per favore, inizia a scrivere! – haroldcarr

+1

Ho un amico che direbbe che questo è quello che sta cercando di esprimere da molto tempo, penso. Cosa descrive l'integrazione di più programmi? È raro che tu possa interagire tra i limiti del programma a livello di testo. – DannoHung

Problemi correlati