Функциональное программирование: не надо бояться

На прошлой неделе состоялся онлайн-митап «Осенний JavaScript». Это уже 35-я встреча серии GPB.Talks, которую организовывает Газпромбанк вместе с Startech.vc. На этот раз спикеры из Газпромбанка, Яндекса и Bravado говорили об инструментах разработки на JavaScript.

От нас выступил главный инженер разработки Надир Жумабаев, который поделился опытом использования функционального программирования (ФП). О новых подходах написания кода речь заходит не каждый день, а функциональное программирование многих вообще озадачивает: где переменные? А где операции?

Я постарался донести до IT-специалистов и программистов мысль о том, что функционального программирования пугаться не стоит

Надир Жумабаев, Главный инженер разработки

Функциональное программирование — это хорошая разминка для ума: оно позволяет больше концентрироваться на том, что требуется сделать, а не на том, как этого добиться. Несмотря на то, что ФП все еще остается диковинкой в мире программирования, оно постепенно набирает популярность, в первую очередь благодаря тому, что улучшает качество кода и разработки.

Современные языки программирования (такие как Swift или Java) заимствуют лучшие из применяемых в ФП приемов. При этом ФП – это про безопасность, причем во всех смыслах. Она достигается за счет чистых функций, отсутствия разделяемого состояния и иммутабельности данных.

Вот некоторые тезисы доклада Надира:

• Функциональное программирование имеет множество определений. Это стиль написания кода, отличающийся от традиционных подходов. К примеру, в ФП не используются for или while. Вместо этого ФП больше ориентируется на рекурсию.

• Функции в ФП реализуются через рекурсию либо pattern matching, то есть сопоставление входящих аргументов функции и запуск соответствующего варианта функции.

• Функции в ФП четко разделяются на «чистые» и «нечистые». «Чистые» функции можно выразить через три отличительные особенности: они не изменяют окружения, не полагаются на окружение и всегда дают одинаковый результат при одинаковых вводных.

• Программы, написанные в стиле ФП, в основном позволяют проводить более глубокий рефакторинг кода. Потому что все «комплексные» (или сложные) сущности компонуются из других, менее сложных сущностей (функций).

Полную версию выступления Надира Жумабаева и других спикеров митапа можно посмотреть здесь:

Запись всех митапов из серии GPB.Talks - по ссылке

44
1 комментарий

Swift, Java и JS — это, конечно же, хорошо, но принципы функционального программирования в них слабо применимы. Даже мультипарадигмальный язык Rust их еле-еле раскрывает, чистый же функциональный и реально применимый язык - это Haskell.