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

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

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

  • Pure Functional Languages- Эти типы функциональных языков поддерживают только функциональные парадигмы. Например - Haskell.

  • Impure Functional Languages- Эти типы функциональных языков поддерживают функциональные парадигмы и императивный стиль программирования. Например - LISP.

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

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

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

  • Функциональное программирование поддерживает higher-order functions и lazy evaluation функции.

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

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

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

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

  • Bugs-Free Code - Функциональное программирование не поддерживает state, поэтому побочных эффектов нет, и мы можем писать безошибочные коды.

  • Efficient Parallel Programming- В функциональных языках программирования НЕТ изменяемого состояния, поэтому нет проблем с изменением состояния. Можно запрограммировать «Функции» на параллельную работу как «инструкции». Такие коды поддерживают возможность повторного использования и тестирования.

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

  • Supports Nested Functions - Функциональное программирование поддерживает вложенные функции.

  • Lazy Evaluation - Функциональное программирование поддерживает ленивые функциональные конструкции, такие как ленивые списки, ленивые карты и т. Д.

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

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

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

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

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

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

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

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

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

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

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

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

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

  • За счет использования оптимальной памяти и энергонезависимой памяти

  • За счет использования компонентов многократного использования, где это применимо.

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

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

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

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