Учебники

Функциональное программирование — Введение

Языки функционального программирования специально разработаны для обработки символьных вычислений и обработки списков. Функциональное программирование основано на математических функциях. Вот некоторые из популярных языков функционального программирования: Lisp, Python, Erlang, Haskell, Clojure и т. Д.

Языки функционального программирования подразделяются на две группы, а именно:

  • Чистые функциональные языки — эти типы функциональных языков поддерживают только функциональные парадигмы. Например — Хаскелл.

  • Impure Functional Languages — эти типы функциональных языков поддерживают функциональные парадигмы и императивный стиль программирования. Например — ЛИСП.

Чистые функциональные языки — эти типы функциональных языков поддерживают только функциональные парадигмы. Например — Хаскелл.

Impure Functional Languages — эти типы функциональных языков поддерживают функциональные парадигмы и императивный стиль программирования. Например — ЛИСП.

Функциональное программирование — характеристики

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

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

  • Функциональное программирование поддерживает функции высшего порядка и ленивые функции оценки .

  • Языки функционального программирования не поддерживают элементы управления потоком, такие как операторы цикла и условные операторы, такие как If-Else и операторы Switch. Они напрямую используют функции и функциональные вызовы.

  • Как и ООП, функциональные языки программирования поддерживают такие популярные понятия, как абстракция, инкапсуляция, наследование и полиморфизм.

Языки функционального программирования разработаны на основе математических функций, которые используют условные выражения и рекурсию для выполнения вычислений.

Функциональное программирование поддерживает функции высшего порядка и ленивые функции оценки .

Языки функционального программирования не поддерживают элементы управления потоком, такие как операторы цикла и условные операторы, такие как If-Else и операторы Switch. Они напрямую используют функции и функциональные вызовы.

Как и ООП, функциональные языки программирования поддерживают такие популярные понятия, как абстракция, инкапсуляция, наследование и полиморфизм.

Функциональное программирование — преимущества

Функциональное программирование предлагает следующие преимущества —

  • Код без ошибок — Функциональное программирование не поддерживает состояние , поэтому нет побочных эффектов, и мы можем писать коды без ошибок.

  • Эффективное параллельное программирование — функциональные языки программирования не имеют изменяемого состояния, поэтому проблем с изменением состояния не возникает. Можно программировать «Функции» для параллельной работы как «инструкции». Такие коды поддерживают легкое повторное использование и тестируемость.

  • Эффективность — Функциональные программы состоят из независимых блоков, которые могут работать одновременно. В результате такие программы более эффективны.

  • Поддерживает вложенные функции — Функциональное программирование поддерживает вложенные функции.

  • Ленивая оценка — Функциональное программирование поддерживает Ленивые Функциональные Конструкции, такие как Ленивые Списки, Ленивые Карты и т. Д.

Код без ошибок — Функциональное программирование не поддерживает состояние , поэтому нет побочных эффектов, и мы можем писать коды без ошибок.

Эффективное параллельное программирование — функциональные языки программирования не имеют изменяемого состояния, поэтому проблем с изменением состояния не возникает. Можно программировать «Функции» для параллельной работы как «инструкции». Такие коды поддерживают легкое повторное использование и тестируемость.

Эффективность — Функциональные программы состоят из независимых блоков, которые могут работать одновременно. В результате такие программы более эффективны.

Поддерживает вложенные функции — Функциональное программирование поддерживает вложенные функции.

Ленивая оценка — Функциональное программирование поддерживает Ленивые Функциональные Конструкции, такие как Ленивые Списки, Ленивые Карты и т. Д.

Недостатком функционального программирования является большой объем памяти. Поскольку у него нет состояния, вам нужно каждый раз создавать новые объекты для выполнения действий.

Функциональное программирование используется в ситуациях, когда нам приходится выполнять множество различных операций с одним и тем же набором данных.

  • Lisp используется для приложений искусственного интеллекта, таких как машинное обучение, обработка языка, моделирование речи и зрения и т. Д.

  • Встроенные интерпретаторы Lisp добавляют программируемость в некоторые системы, такие как Emacs.

Lisp используется для приложений искусственного интеллекта, таких как машинное обучение, обработка языка, моделирование речи и зрения и т. Д.

Встроенные интерпретаторы Lisp добавляют программируемость в некоторые системы, такие как Emacs.

Функциональное программирование против объектно-ориентированного программирования

В следующей таблице приведены основные различия между функциональным программированием и объектно-ориентированным программированием.

Функциональное программирование OOP
Использует неизменные данные. Использует изменяемые данные.
Следует декларативной модели программирования. Следует модели императивного программирования.
Основное внимание уделяется: «Что вы делаете» Фокус на «Как дела»
Поддерживает параллельное программирование Не подходит для параллельного программирования
Его функции не имеют побочных эффектов Его методы могут вызвать серьезные побочные эффекты.
Управление потоком осуществляется с помощью вызовов функций и вызовов функций с рекурсией Управление потоком осуществляется с помощью циклов и условных операторов.
Он использует концепцию «Рекурсия» для итерации сбор данных. Он использует концепцию «петли» для итерации сбора данных. Например: цикл For-each в Java
Порядок выполнения выписок не так важен. Порядок выполнения выписок очень важен.
Поддерживает как «Абстракция над данными», так и «Абстракция над поведением». Поддерживает только «Абстракция над данными».

Эффективность программного кода

Эффективность программного кода прямо пропорциональна алгоритмической эффективности и скорости выполнения. Хорошая эффективность обеспечивает более высокую производительность.

Факторы, которые влияют на эффективность программы, включают в себя:

  • Скорость машины
  • Скорость компилятора
  • Операционная система
  • Выбор правильного языка программирования
  • Порядок данных в программе организован
  • Алгоритм, используемый для решения проблемы

Эффективность языка программирования может быть улучшена путем выполнения следующих задач —

  • Удаляя ненужный код или код, который идет на избыточную обработку.

  • Используя оптимальную память и энергонезависимую память

  • Благодаря использованию повторно используемых компонентов, где это применимо.

  • Используя обработку ошибок и исключений на всех уровнях программы.

  • Создавая программный код, который обеспечивает целостность и согласованность данных.

  • Разрабатывая программный код, который соответствует логике проектирования и последовательности действий.

Удаляя ненужный код или код, который идет на избыточную обработку.

Используя оптимальную память и энергонезависимую память

Благодаря использованию повторно используемых компонентов, где это применимо.

Используя обработку ошибок и исключений на всех уровнях программы.

Создавая программный код, который обеспечивает целостность и согласованность данных.

Разрабатывая программный код, который соответствует логике проектирования и последовательности действий.

Эффективный программный код может максимально сократить потребление ресурсов и время выполнения с минимальным риском для операционной среды.