Si, como yo, habéis tenido la suerte/desgracia (apliquensé los dos términos) de estudiar programación funcional en la carrera (haskell, lisp, hope o variantes) sin duda pensaríais que aquello era lo menos práctico y lo más inútil que había para programar, en especial si antes ya habíais programado en algún lenguaje imperativo como c o pascarl.
El problema, en mi opinión que viene de mi caso concreto, viene del hecho de que en la universidad se limitan a enseñarte el como, dandote una introducción a la programación funcional y la programación en general, sin preocuparse de enseñarte las ventajas que tiene, y las tiene, muchas.
Por ejemplo, no estaría mal comenzar diciendo que la programación funcional (el cálculo lambda en el que esta se basa) es tan potente (y es demostrable matemáticamente hablando) como el cálculo basado en máquinas de turing (la base de la programación imperativa). Y si ya después de eso presentamos las ventajas como lo hacen en este excelente artículo sobre programación funcional de defmacro, quizá no saldríamos tan asustados de la programación funcional.
El artículo está en inglés pero realmente merece la pena y estoy seguro de que cambiará vuestra visión del asunto, por citar, para los que no se les de muy bien el inglés voy a repasar un par de ventajas (aunque, de verdad, para comprender el concepto global es muy importante leer el artículo):
Esto es solo un poco por encima y realmente merece la pena leer el artículo para comprender cada cosa en profundidad.
Otros links: Erlang. Erlang es un lenguaje de programación concurrente y de uso en numerosas aplicaciones comerciales que, de hecho, prueba en gran medida los conceptos explicados anteriormente.