Primeiro de tudo - porque o compilador precisa fazer muito mais. Se você deseja criar um compilador imperativo, você pode quase transformar 1-1 em assembler e o código produzido terá velocidade aceitável (com certeza - pode haver muito o que fazer, mas é 'basicamente' compilação 1-1 + otimização). Compiladores funcionais precisam lidar com inline pesado, otimização de chamada final, etc. Portanto, a implementação de linguagens funcionais era muito mais lenta que C / C ++ / ... no passado (no entanto, elas ganham muita velocidade a cada iteração à medida que os compiladores estão melhorando).
Em segundo lugar - os programadores são tão acostumados a afirmar que não podem 'aceitar' a abordagem "não existe spoo ... state". Claro - a falta de estado não é útil em cada condição, mas a falta de estado (global) não significa falta de estado local.
Terceiro - a programação funcional não tem uma história legal por trás disso. O POO tem uma história legal quando os objetos são mapeados para substantivos e quão intuitivo é. Depois, você sabe que não é tão simples, porque você não pode criar uma classe Manager
com a subclasse de Employee
como Employee
pode ser promovida Manager
e você precisa brincar com os decoradores. Os programas funcionais têm uma história em matemática que é IMHO mais útil, mas menos comercializável.
Como internamente da perspectiva do computador - não há diferença entre computação paralela e computação simultânea, muitos programadores não vêem diferença e muitas linguagens têm as mesmas primitivas para lidar com ambas. Graças à falta de estado local e threads leves em linguagens de programação funcional, a paralelização do algoritmo é muito mais fácil. No entanto, a programação simultânea não é facilitada automaticamente, pois a simultaneidade se refere ao estado global.
Finalmente - existem muitos programas mais antigos escritos em estilo inperativo. Mesmo a passagem da linguagem imperativa para a linguagem imperativa é muito mais simples que a funcional.
Até onde eu sei, os bancos de investimento começam a adotar internamente os programas funcionais, para que eles cheguem ao XXI c. (em uma área muito importante, embora oculta) - para que ganhem impulso.
PS. Embora eu acredite que os programas funcionais sejam "melhores" no sentido de esconder melhor a complexidade do que outras abordagens, isso não significa que não haja áreas como scripts que sejam inerentemente imperativas.