Существует множество «теоретических» аргументов в пользу того, почему функциональное программирование является хорошей идеей (слишком много, чтобы это оставалось открытым вопросом, и это правильно).
Тем не менее, большинство из них являются аргументами, основанными либо на теории («элегантность» и т. Д.), Либо нацеленными на разработчиков.
Проблема в том, что большинство из них совершенно бесполезны, когда цель состоит в том, чтобы представить идею высшему руководству крупной компании , некоторые из которых даже не являются разработчиками, и все из которых в основном заботятся о деловых аргументах : стоимости, управлении человеческим капиталом доставка товара, обслуживание клиентов и выручка; а также количественные факты по теоретическим вопросам, которые не могут быть полностью подтверждены фактами.
Существуют ли убедительные аргументы для решения этих бизнес-задач, если принять во внимание принятие функционального программирования в качестве концепции (не какого-либо конкретного языка), в отличие от типичного сочетания процедурного / ООП, например, Java / C ++ / (Perl | Python) ,
Предпочтительно, я ищу аргументы, которые являются количественными и / или основанными на исследовании или тематических исследованиях. Например, «согласно этой ссылке, уровень ошибок многопоточных систем в Lisp / F # составляет 10% от уровня Java» или «80% выпускников высших учебных заведений выражают предпочтения желаемой технологии, называемой функциональным программированием как одной из трех основных интересов».
Я знаю, что Грэм представил варианты использования функционального программирования для стартапа и был бы открыт для некоторых из его аргументов, предполагая, что они могут быть действительными для более крупной устоявшейся компании.
PS Я прекрасно понимаю, что вы можете сделать что-то близкое к функциональному программированию на Perl, вероятно, на Python, и (возможно) даже на Java 8 или C ++ 14. Но это не значит, что организация, использующая Perl, C ++ или Java, поддержит функционал против ООП / процедурные подходы даже на этих языках
Для целей этого языка «большой» определяется как достаточно большой, чтобы иметь специальную группу разработки / инструментов разработки, которая определяет, что всем разработчикам разрешено использовать / делать; и по крайней мере сотни разработчиков на низком уровне .