El problema real es el estado.
Los lenguajes funcionales no tienen estado global. La mayoría de los problemas industriales requieren un estado a gran escala (¿cómo representa usted un libro mayor o un conjunto de transacciones) incluso si algunas funciones en la pequeña escala no lo requieren realmente (procesar un libro mayor)?
Pero estamos ejecutando código en máquinas de arquitectura Von-Neuman que están inherentemente llenas de estado. Entonces, en realidad no nos hemos librado del estado, los lenguajes funcionales simplemente ocultan la complejidad del estado al desarrollador. Esto significa que el lenguaje / compilador tiene que lidiar con el estado detrás de la escena y administrarlo.
Entonces, aunque los lenguajes funcionales no tienen un estado global, su información de estado se pasa como parámetros y resultados.
Entonces, la pregunta es: ¿el lenguaje puede manejar el estado de manera eficiente detrás del sentido? Especialmente cuando el tamaño de los datos supera con creces el tamaño de la arquitectura.
Mirándolo desde el lado del hardware
El sistema operativo ha ayudado mucho en los últimos años en la visualización del espacio de direcciones para que las aplicaciones no tengan que preocuparse oficialmente por ello. Pero las aplicaciones que no se preocupan por caer en la trampa de golpear el hardware cuando la presión de la memoria se vuelve más intensa (el hardware de la paliza ralentizará sus procesos).
Como el programador no tiene control directo sobre el estado en el lenguaje funcional, debe confiar en el compilador para manejar esto y no he visto lenguajes funcionales que lo manejen bien.
En el lado opuesto de la moneda, el programador de estado completo tiene control directo sobre el estado y por lo tanto puede compensar las condiciones de memoria baja. Aunque no he visto a muchos programadores que sean lo suficientemente inteligentes como para hacerlo.
Mirando desde el lado de la industria:
La industria tiene muchos programadores ineficientes llenos de estado.
Pero es fácil medir las mejoras en estos programas a lo largo del tiempo. El problema es que un equipo de desarrolladores puede mejorar el código al mejorar la forma en que el programa maneja el estado.
Para los programas funcionales, las mejoras son más difíciles de medir , ya que necesita mejorar las herramientas que mejorarán los programas (solo observamos cómo las aplicaciones manejan el estado subyacente de manera eficiente, no la mejora general). del programa).
Entonces, para la industria, creo que todo se reduce a la capacidad de medir mejoras en el código.
Desde una perspectiva de contratación
Hay muchos programadores de estadísticas completas disponibles para contratar. Los programadores funcionales son difíciles de encontrar. Por lo tanto, su modelo básico de oferta y demanda se activaría si la industria cambiara a la programación de estilo funcional y eso no es algo que quieran que suceda (los programadores son lo suficientemente caros).