С тех пор как я начал изучать F # и OCaml в прошлом году, я прочитал огромное количество статей, в которых утверждается, что шаблоны проектирования (особенно в Java) - это обходные пути для отсутствующих функций в императивных языках. Одна статья, которую я нашел , выдвигает довольно сильные претензии :
Большинство людей, которых я встречал, читали
Книга «Шаблоны дизайна» от банды
Четыре. Любой уважающий себя программист
скажу вам, что книга
языковая независимость и закономерности
применить к разработке программного обеспечения в
вообще, независимо от того, на каком языке
ты используешь. Это благородное требование.
К сожалению, это далеко от
правда.
Функциональные языки чрезвычайно
выразительный. На функциональном языке
не нужно шаблонов дизайна
потому что язык, вероятно, так высоко
уровень, вы в конечном итоге программирование в
концепции, которые устраняют дизайн
шаблоны все вместе.
Основные функции функционального программирования включают функции в качестве первоклассных значений, карри, неизменяемых значений и т. Д. Мне не кажется очевидным, что шаблоны проектирования ОО приближаются к любой из этих функций.
Кроме того, на функциональных языках, которые поддерживают ООП (таких как F # и OCaml), мне кажется очевидным, что программисты, использующие эти языки, будут использовать те же шаблоны проектирования, которые доступны для любого другого языка ООП. Фактически, сейчас я использую F # и OCaml каждый день, и нет никаких разительных отличий между шаблонами, которые я использую в этих языках, и шаблонами, которые я использую, когда пишу в Java.
Есть ли правда в утверждении, что функциональное программирование устраняет необходимость в шаблонах проектирования ООП? Если да, не могли бы вы опубликовать или дать ссылку на пример типового шаблона ООП и его функциональный эквивалент?