Функциональная парадигма программирования
Автор: Макаров Д.А., Шибанова А.Д.
Журнал: Теория и практика современной науки @modern-j
Рубрика: Математика, информатика и инженерия
Статья в выпуске: 7 (61), 2020 года.
Бесплатный доступ
В данной статье рассмотрена парадигма функционального программирования. Проведен анализ концепций функционального программирования, выделены их особенности. Указана область применения каждого из них. Описаны плюсы и минусы применения данной парадигмы.
Функция, программирование, лямбда-исчисление, рекурсия, ссылочная прозрачность
Короткий адрес: https://sciup.org/140275646
IDR: 140275646
Текст научной статьи Функциональная парадигма программирования
Функциональное программирование - это способ думать о конструировании программного обеспечения путем создания чистых функций. Это позволяет избежать концепций общего состояния, изменчивых данных, наблюдаемых в объектно-ориентированном программировании. [1]
Функциональные языки опираются на выражения и объявления, а не на выполнение операторов. Следовательно, в отличие от других процедур, которые зависят от локального или глобального состояния, вывод значения в ФП зависит только от аргументов, переданных функции.
Характеристики функционального программирования:
-
• Метод функционального программирования ориентирован на результат, а не на процесс
-
• Акцент на том, что должно быть вычислено
-
• Данные неизменны
-
• Оно построено на концепции математических функций, которые ис
пользуют условные выражения и рекурсию для выполнения вычислений
-
• Оно не поддерживает итерацию, такую как операторы цикла, и
- условные операторы, такие как If-Else. [2]
Целью любого языка ФП является имитация математических функций. Однако основной процесс вычислений отличается в функциональном программировании.
Вот некоторые наиболее известные языки функционального программирования: Haskell, SML, Clojure, Scala, Erlang, F#.
Функциональные программы должны выполнять операции так же, как в первый раз. Таким образом, вы будете знать, что могло или не могло произойти во время выполнения программы, и ее побочные эффекты. В терминах ФП это называется ссылочной прозрачностью. [3]
Модульная конструкция повышает производительность. Небольшие модули могут быть быстро закодированы и имеют больше шансов на повторное использование, что, несомненно, приводит к более быстрой разработке программ. Кроме того, модули могут тестироваться отдельно, что помогает сократить время, затрачиваемое на модульное тестирование и отладку.
Поддерживаемость - это простой термин, означающий, что программирование на ФП легче поддерживать, поскольку вам не нужно беспокоиться о случайном изменении чего-либо за пределами данной функции.
«Первоклассная функция» - это определение, приписываемое сущностям языка программирования, которые не имеют ограничений на их ис- пользование. Поэтому первоклассные функции могут появляться в любом месте программы.
Закрытие - это внутренняя функция, которая может обращаться к переменным родительской функции даже после выполнения родительской функции.
Функции высшего порядка либо принимают другие функции в качестве аргументов, либо возвращают их в качестве результатов. [4]
Функции высшего порядка допускают частичное применение. Этот метод применяет функцию к своим аргументам по одному, поскольку каждое приложение возвращает новую функцию, которая принимает следующий аргумент.
Совместное использование состояний является важной концепцией в программировании ООП. По сути, это добавление свойств к объектам.
Побочные эффекты - это любые изменения состояния, которые происходят вне вызываемой функции. Самая большая цель любого языка программирования ФП - минимизировать побочные эффекты, отделяя их от остального программного кода. В программировании на ФП жизненно важно убрать побочные эффекты от остальной логики программирования.
Преимущества функционального программирования:
-
• Позволяет избежать запутанных проблем и ошибок в коде
-
• Проще протестировать и выполнить модульное тестирование и отладку кода ФП.
-
• Параллельная обработка и параллелизм
-
• Горячее развертывание кода и отказоустойчивость
-
• Обеспечивает лучшую модульность благодаря более короткому коду
-
• Увеличение производительности разработчика
-
• Поддерживает вложенные функции
-
• Позволяет эффективно использовать лямбда-исчисление
Ограничения функционального программирования:
-
• Парадигма функционального программирования непроста, поэтому ее трудно понять новичку
-
• Повторное использование очень сложно и требует постоянного рефакторинга
Список литературы Функциональная парадигма программирования
- Роганова, Н.А. Функциональное программирование - М.: МГИУ, 2007. - 220 c.
- Сергиевский, Г.М. Функциональное и логическое программирование: учебное пособие - М.: Academia, 2018. - 158 c.
- Сошников, Д.В. Функциональное программирование на F# - М.: ДМК, 2011. - 192 c.
- Хостманн, К. Функциональное программирование. SCALA для нетерпеливых - М.: ДМК, 2015. - 408 c.