Описание тега functional-programming

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

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

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

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

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

Сегодня функциональное программирование становится все более популярным. Основная причина этого - доказуемость свойств функциональных программ, а безопасность сейчас очень важна. Есть много вариантов использования функционального программирования, например, вычисления или обработка параллелизма. Примеры использования функционального программирования.

Языки программирования

Эти языки перечислены в порядке их популярности относительно functional-programming тег.

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

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

История и концепции

Концепция, эволюция и применение языков функционального программирования Пола Худака.