Проблема с функциональным программированием не в самом функциональном программировании - это большинство людей, которые делают это и (что еще хуже) большинство людей, которые создают языки, на которых это делается.
Проблема связана с тем фактом, что, несмотря на то, что люди очень умные (иногда совершенно блестящие), слишком многие люди слишком фанатичны в отношении чистоты, совершенства и реализации своего собственного (часто довольно узкого) взгляда на мир и программирования на язык и все, кто его использует.
Одним из результатов является неспособность к компромиссу. Это приводит (помимо всего прочего) к примерно 10 000 языков и диалектов, которые достаточно различны, чтобы раздражать, но лишь в редких случаях достаточно различаются, чтобы один имел действительно значительное преимущество над другими. Многие также смотрят на реальный мир и решают, что, поскольку он не очень хорошо вписывается в функциональную модель, он в основном просто неправильный и лучше всего игнорируется.
Неспособность идти на компромисс также привела к появлению нескольких языков, которые абсолютно прекрасны для определенного типа проблемы (или нескольких конкретных типов проблем), но действительно отстой для многих других. Частично это, вероятно, вызвано самой функциональной моделью, но гораздо больше (по крайней мере, мне) вызвано базовым типом личности, который изначально привлекает эту область.
Это приводит к ряду проблем. Прежде всего, изучение «функционального программирования» имеет в основном философскую ценность. Для большинства других типов языков знание одного языка определенного жанра существенно помогает в изучении другого. Если в моем проекте используется язык XI, обычно я могу нанять человека, который знает язык Y (но не X), достаточно безопасно. С функциональными языками это гораздо менее верно. Возможно, вы хорошо знаете Эрланга, но все еще находите монады Хаскелла совершенно чужими и непостижимыми.
Соедините количество языков с ограниченной переносимостью талантов между ними, и вы получите уродливую ситуацию: для одного языка или диалекта почти невозможно сформировать «критическую массу», необходимую для того, чтобы сделать ее достаточно широко используемой. Это медленно меняется, но это все еще очень много , как Linux становится доминирующей настольной ОС - каждый год, люди приходят с убедительными аргументами , что в конце концов это будет год - и так же , как людей , которые предсказывали , что каждый год на протяжении десятилетий, они снова будут неправы. Это не означает, что этого (любого из них) никогда не случится, просто люди, которые смотрят на прогнозы и думают: «Нет, не в этом году», были теми, кто был прав до сих пор.