Функциональное программирование является парадигмой программирования, основанной на создании абстракций с помощью функций, избегая побочных эффектов и изменения состояния. Чистое функциональное программирование ориентировано на многопотоковое исполнение.
Функциональное программирование является парадигмой программирования, которая имеет дело, прежде всего, с математическими функциями. На функциональных языках функции являются первоклассными значениями.
Функции берут аргументы и результаты возврата, но обычно не видоизменяют состояние. Это в отличие от императивного программирования, которое, прежде всего, вращает вокруг операторов то состояние изменения. Преимущество предотвращения изменяемого состояния состоит в том, что можно безопасно составить функции, и можно использовать алгебраические законы, и "замена равняется для, равняется", чтобы упростить программы или улучшить их производительность.
Одно последствие этого - то, что много общих шаблонов в программировании могут быть абстрагированы как функции высшего порядка, которые используют предоставленную пользователями функцию, которая реализует реальную функциональность, и примените его к данным определенным способом. Это может сделать код более кратким и более простым рассуждать об и понять.
Функциональное программирование выросло из математической системы, названной лямбда-исчислением, которое было разработано в 1930-х. шепелявость была первым языком программирования, который будет основан на лямбда-исчислении.
Сегодня, функциональное программирование становится все более популярным. Главной причиной для этого является доказуемость свойств функциональных программ, и безопасность очень важна в наше время. Существует много вариантов использования для функционального программирования, например, обработки Параллелизма или Вычислений. Варианты использования функционального программирования.
Эти языки перечислены в порядке популярности относительно functional-programming
тег.
Языки, которые, прежде всего, функциональны, хотя некоторые также поддерживают изменяемое состояние или другие парадигмы программирования:
Языки, которые имеют некоторые функциональные аспекты (как поддержка функций первого класса), но не считаются функциональными языками по сути:
Концепция, эволюция и приложение языков функционального программирования Paul Hudak.