Il vero problema è lo stato.
I linguaggi funzionali non hanno uno stato globale. La maggior parte dei problemi industriali richiede uno stato su larga scala (come si rappresenta un libro mastro o un insieme di transazioni) anche se alcune funzioni su piccola scala non lo richiedono (elaborazione di un libro mastro).
Ma stiamo eseguendo codice su macchine di architettura Von-Neuman che sono intrinsecamente piene di stato. Quindi in realtà non ci siamo liberati dello stato, i linguaggi funzionali nascondono semplicemente la complessità dello stato allo sviluppatore. Ciò significa che il linguaggio / compilatore deve gestire lo stato dietro le quinte e gestirlo.
Quindi, sebbene i linguaggi funzionali non abbiano uno stato globale, le loro informazioni sullo stato vengono passate come parametri e risultato.
Quindi la domanda diventa allora: la lingua può gestire lo stato in modo efficiente dietro il senso? Soprattutto quando la dimensione dei dati supera di gran lunga la dimensione dell'architettura.
Guardandolo dal lato hardware
Il sistema operativo ha aiutato molto negli ultimi due anni nella visualizzazione dello spazio degli indirizzi, quindi le applicazioni non devono ufficialmente preoccuparsene. Ma le applicazioni che non si preoccupano di cadere cadono nella trappola del thrashing dell'hardware quando la pressione della memoria diventa intensa (il thrashing dell'hardware rallenterà i processi fino a gattonare).
Dato che il programmatore non ha il controllo diretto dello stato nel linguaggio funzionale, per gestirlo devono fare affidamento sul compilatore e non ho visto linguaggi funzionali che gestiscano bene questo.
Sul lato opposto della medaglia il programmatore pieno di stato ha il controllo diretto sullo stato e può quindi compensare le condizioni di memoria insufficiente. Anche se non ho visto molti programmatori che in realtà sono abbastanza intelligenti da farlo.
Guardando dal lato dell'industria:
L'industria ha molti programmatori inefficienti pieni di stato.
Ma è facile misurare i miglioramenti di questi programmi nel tempo. Si lancia un team di sviluppatori al problema che possono migliorare il codice migliorando il modo in cui il programma gestisce lo stato.
Per i programmi funzionali i miglioramenti sono più difficili da misurare in quanto è necessario migliorare gli strumenti che miglioreranno i programmi (stiamo solo esaminando come le applicazioni gestiscono lo stato sottostante in modo efficiente qui, non il miglioramento complessivo del programma).
Quindi per l'industria penso che dipenda dalla capacità di misurare i miglioramenti del codice.
Da una prospettiva assumente
Ci sono molti programmatori stat-full disponibili per il noleggio. I programmatori funzionali sono difficili da trovare. Quindi il tuo modello di domanda e offerta di base entrerebbe in gioco se l'industria passasse alla programmazione di stile funzionale e questo non è qualcosa che vogliono accadere (i programmatori sono abbastanza costosi come sono).