Sono uno sviluppatore web da un po 'di tempo e di recente ho iniziato a imparare un po' di programmazione funzionale. Come altri, ho avuto alcuni problemi significativi ad applicare molti di questi concetti al mio lavoro professionale. Per me, la ragione principale di ciò è che vedo un conflitto tra l'obiettivo di FP di rimanere apolidi sembra piuttosto in contrasto con il fatto che la maggior parte del lavoro di sviluppo web che ho svolto è stato fortemente legato ai database, che sono molto incentrati sui dati.
Una cosa che mi ha reso uno sviluppatore molto più produttivo sul lato OOP delle cose è stata la scoperta di mappatori relazionali a oggetti come MyGeneration d00dads per .Net, Class :: DBI per perl, ActiveRecord per ruby, ecc. Questo mi ha permesso di stare alla larga dallo scrivere istruzioni di inserimento e selezione tutto il giorno e concentrarsi sul lavorare facilmente con i dati come oggetti. Naturalmente, potevo ancora scrivere query SQL quando era necessaria la loro potenza, ma per il resto veniva astratta bene dietro le quinte.
Ora, passando alla programmazione funzionale, sembra che con molti framework web FP come i collegamenti richiedano la scrittura di molto codice sql boilerplate, come in questo esempio . Weblocks sembra un po 'meglio, ma sembra utilizzare una sorta di modello OOP per lavorare con i dati e richiede ancora che il codice venga scritto manualmente per ogni tabella nel database come in questo esempio . Suppongo che tu usi un po 'di generazione di codice per scrivere queste funzioni di mappatura, ma sembra decisamente poco lisp.
(Nota che non ho esaminato i Weblock oi Link in modo estremamente accurato, potrei semplicemente fraintendere il modo in cui vengono utilizzati).
Quindi la domanda è, per le porzioni di accesso al database (che credo siano piuttosto grandi) dell'applicazione web, o altro sviluppo che richiede un'interfaccia con un database sql, sembra che siamo costretti a seguire uno dei seguenti percorsi:
- Non utilizzare la programmazione funzionale
- Accedi ai dati in un modo fastidioso e non astratto che implica la scrittura manuale di un sacco di codice SQL o simile a SQL ala Links
- Forza il nostro linguaggio funzionale in un paradigma pseudo-OOP, rimuovendo così un po 'dell'eleganza e della stabilità della vera programmazione funzionale.
Chiaramente, nessuna di queste opzioni sembra l'ideale. Ha trovato un modo per aggirare questi problemi? C'è davvero un problema pari qui?
Nota: personalmente ho più familiarità con LISP sul fronte FP, quindi se vuoi fornire esempi e conoscere più lingue FP, lisp sarebbe probabilmente la lingua preferita di scelta
PS: per problemi specifici di altri aspetti dello sviluppo web, vedere questa domanda .