Языки функционального программирования специально разработаны для обработки символьных вычислений и обработки списков. Функциональное программирование основано на математических функциях. Вот некоторые из популярных языков функционального программирования: 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 |
Порядок выполнения выписок не так важен. | Порядок выполнения выписок очень важен. |
Поддерживает как «Абстракция над данными», так и «Абстракция над поведением». | Поддерживает только «Абстракция над данными». |
Эффективность программного кода
Эффективность программного кода прямо пропорциональна алгоритмической эффективности и скорости выполнения. Хорошая эффективность обеспечивает более высокую производительность.
Факторы, которые влияют на эффективность программы, включают в себя:
- Скорость машины
- Скорость компилятора
- Операционная система
- Выбор правильного языка программирования
- Порядок данных в программе организован
- Алгоритм, используемый для решения проблемы
Эффективность языка программирования может быть улучшена путем выполнения следующих задач —
-
Удаляя ненужный код или код, который идет на избыточную обработку.
-
Используя оптимальную память и энергонезависимую память
-
Благодаря использованию повторно используемых компонентов, где это применимо.
-
Используя обработку ошибок и исключений на всех уровнях программы.
-
Создавая программный код, который обеспечивает целостность и согласованность данных.
-
Разрабатывая программный код, который соответствует логике проектирования и последовательности действий.
Удаляя ненужный код или код, который идет на избыточную обработку.
Используя оптимальную память и энергонезависимую память
Благодаря использованию повторно используемых компонентов, где это применимо.
Используя обработку ошибок и исключений на всех уровнях программы.
Создавая программный код, который обеспечивает целостность и согласованность данных.
Разрабатывая программный код, который соответствует логике проектирования и последовательности действий.
Эффективный программный код может максимально сократить потребление ресурсов и время выполнения с минимальным риском для операционной среды.