Cita:
Iniciado por agleiva Luego, desde el punto de vista de FP, uno piensa lo mismo de OOP... el nivel de abstracción que proveen los lenguajes OOP como C# o java es limitado comparado los lenguajes funcionales. Eso no quita obviamente que OOP sea totalmente dominante en el ámbito laboral, pero no es el punto.
Cuando llega algo nuevo que es claramente superior a lo existente triunfa. Como en la naturaleza, cuando llega una especie que se adapta mejor que ninguna anterior al medio ambiente (incluyendo la existencia de otras especies) triunfa y se reproduce como la espuma. Cuando esto no pasa, la especie puede llegar a sobrevivir por un tiempo pero tarde o temprano encontrará una dificultad que la haga desaparecer.
Lo mismo pasa a todas las creaciones hechas por el hombre. O se adaptan mejor que ninguna otra a la función para lo que han sido creadas o pueden sobrevivir por un tiempo, pero al final desaparecerán. Igual que le pasó al DVD. El DVD era una clara ventaja sobre el VHS y en muy poco tiempo lo sustituyó. Sin embargo antes todos teníamos Messenger incluso en el móvil hasta la llegada de WhatsApp que se adaptó a la necesidad de envió de mensajes a móvil mejor que ningún otro. Y por eso es un producto que usa muchísima gente. Después han salido otros productos que, aunque son mejores, tienen la desventaja de que no cubren necesidades no cubiertas. Y por eso no triunfan.
Lo mismo le pasa al FP. Si la POO sigue siendo la más utilizada y no hay crecimiento en la FP es porque no se adapta al medio, y por tanto no es mejor forma de abstractar los problemas para llevarlos a un lenguaje. Si esa forma de afrontar los problemas hubiese sido mejor que la POO hubiese tenido un crecimiento frente a lo anterior igual que el que tuvo la POO cuando nació.
Y te voy a explicar por qué la FP no ha triunfado frente a la POO ni nunca lo hará.
Cuando una persona quiere hacer algo... quiere hacerlo por sí misma, y realizar una FUNCION por sí misma. Para realizar dicha función puede necesitar de OBJETOS, para usarlos como herramientas. Lo que no quiere es delegar esa función en algo/alguien porque explicar exactamente lo que quiere y como lo quiere es un esfuerzo mayor que realizarlo él mismo.
Cuando un comercial en una tienda vende una televisión, quiere contabilizar la venta. Y para ello quiere un objeto que le ayude a contabilizarlo. Y lo mismo le pasa a los programadores. Los programadores no quieren funciones, quieren objetos que les ayuden a hacer las funciones que ellos mismos quieren hacer. Y eso se da de manera natural en la forma en la que tenemos las personas de ver el mundo. Cualquier cosa que sea contraria a la manera en la que tenemos las personas de ver el mundo, y que no se adapte a esta manera... no va a triunfar nunca.
Otro ejemplo es el jefe de una tienda de informática que tiene a un técnico trabajando para él. Por mucho que se intente nombrar al técnico, englobándolo dentro de un concepto abstracto como es el de "Servicio técnico"... y por mucho que el jefe diga "Yo se lo doy al servicio técnico"... en el fondo sabemos que son personas, no son abstracciones. Y que lo que sea que quiera dárselo "al servicio técnico" se lo va a dar a una persona.
Resumiendo: Lo que las personas ven es que son los OBJETOS los que realizan funciones. No las funciones las que se sirven de objetos para ser realizadas.
PD: Perdón por desvirtuar. Aunque si nos ponemos a pensar... también al creador del hilo le vendrá bien esta respuesta.