En primer lugar, porque el compilador tiene que hacer mucho más. Si desea crear un compilador imperativo, puede hacer una transformación de 1-1 en ensamblador y el código producido tendrá una velocidad aceptable (claro, podría haber mucho que hacer, pero es 'básicamente' 1-1 compilación + optimización). Los compiladores funcionales TIENEN QUE manejar una alineación bien ajustada, una optimización de llamadas de cola, etc. Por lo tanto, la implementación de lenguajes funcionales fue mucho más lenta que C / C ++ / ... en el pasado (sin embargo, ganan mucha velocidad en cada iteración a medida que los compiladores mejoran).
En segundo lugar, los programadores están tan acostumbrados a afirmar que no pueden "aceptar" el enfoque de "no hay spoo ... estado". Claro, la falta de estado no es útil en cada condición, pero la falta de estado (global) no significa falta de estado local.
En tercer lugar, la programación funcional no tiene una buena historia detrás. Los OOP tienen una buena historia ya que los objetos se asignan a sustantivos y lo intuitivo que es. Después, sabes que no es tan simple porque no puedes crear una clase Managercomo una subclase de la Employeeque se Employeepuede promocionar Managery tienes que jugar con decoradores. Los programas funcionales tienen una historia en matemáticas que, en mi humilde opinión, es más útil pero menos comercializable.
Como internamente desde la perspectiva de la computadora: no hay diferencia entre la computación paralela y concurrente, muchos programadores no ven la diferencia y muchos lenguajes tienen las mismas primitivas para manejar ambos. Gracias a la falta de estado local y de hilos livianos en lenguajes de programación funcionales, la paralelización del algoritmo es mucho más fácil. Sin embargo, la programación concurrente no se hace automáticamente más fácil ya que la concurrencia se trata del estado global.
Finalmente, hay muchos programas antiguos escritos en estilo no operativo. Incluso la transferencia del lenguaje imperativo al lenguaje imperativo es mucho más simple que funcional.
Hasta donde yo sé, los bancos de inversión comienzan a adoptar los programas funcionales internamente, por lo que sí entran en XXI c. (en un área muy importante aunque oculta), por lo que ganan impulso.
PD. Si bien creo que los programas funcionales son "mejores" en el sentido de que ocultan la complejidad mejor que otros enfoques, no significa que no hay áreas como los scripts que sean inherentemente imprescindibles.