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

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

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

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

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

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

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

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

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

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

История и понятия

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