Добавить в корзинуПозвонить
Найти в Дзене
Gross QB

Что такое функциональное программирование?

Функциональное программирование‚ как и объектно–ориентированное программирование‚ является парадигмой программирования․ Не существует формального согласованного определения того‚ что влечет за собой ФП‚ но есть два основных понятия‚ с которыми согласится большинство людей։ Неизменность В функциональном программировании мы стремимся избежать изменения состояния․ Фактически‚ во многих функциональных языках изменение переменной просто невозможно․ У нас также есть понятие чистых функций‚ то есть функций‚ которые не могут иметь никаких побочных эффектов‚ кроме возврата значения․ Теперь‚ если вы новичок в ФП‚ это может звучать очень странно‚ но на самом деле очень приятно‚ когда вы к этому привыкнете․ Потому что взамен отказа от возможности изменять состояние в наших программах мы получаем действительно хорошие преимущества․ Одним из главных преимуществ‚ является то‚ что код‚ написанный в функциональном стиле‚ гораздо легче понять․ Если я хочу знать‚ что делает данный фрагмент кода‚ я знаю‚
Оглавление
функциональное программирование
функциональное программирование

Функциональное программирование‚ как и объектно–ориентированное программирование‚ является парадигмой программирования․ Не существует формального согласованного определения того‚ что влечет за собой ФП‚ но есть два основных понятия‚ с которыми согласится большинство людей։

  • Избегание мутации и побочных эффектов
  • Использование функций в качестве центрального строительного блока программ

Неизменность

В функциональном программировании мы стремимся избежать изменения состояния․ Фактически‚ во многих функциональных языках изменение переменной просто невозможно․ У нас также есть понятие чистых функций‚ то есть функций‚ которые не могут иметь никаких побочных эффектов‚ кроме возврата значения․

Теперь‚ если вы новичок в ФП‚ это может звучать очень странно‚ но на самом деле очень приятно‚ когда вы к этому привыкнете․ Потому что взамен отказа от возможности изменять состояние в наших программах мы получаем действительно хорошие преимущества․

Одним из главных преимуществ‚ является то‚ что код‚ написанный в функциональном стиле‚ гораздо легче понять․ Если я хочу знать‚ что делает данный фрагмент кода‚ я знаю‚ что мне нужно будет только посмотреть на этот конкретный код и не беспокоиться о том‚ как состояние в других частях программы может повлиять на него․

Компьютер также может получить большую выгоду от написания кода в функциональном стиле‚ что открывает возможность для некоторых приятных оптимизаций․ Например‚ два чистых выражения‚ которые не зависят друг от друга‚ могут быть легко вычислены параллельно‚ и чистая функция может запоминаться автоматически‚ поскольку она всегда будет давать один и тот же результат при вызове с заданным набором входных данных

Функции как строительные блоки․

В ООП основными строительными блоками являются классы и объекты․ В ФП‚ напротив‚ вы строите свои программы‚ используя функции․ На большинстве функциональных языков вся ваша программа будет просто функцией․ И эта функция‚ в свою очередь‚ будет построена из других функций․

Функции также должны принимать другие функции в качестве аргументов и даже могут иметь функции в качестве возвращаемого значения․ Их называют функциями высокого порядка․ Обычно создаются новые функции‚ составляя две другие функции вместе или вызывая функцию только с некоторыми из ее аргументов‚ чтобы создать новую функцию․

Что такое функциональный язык?

Язык программирования не является функциональными‚ и не функциональными․ Это больше похоже на спектр‚ где языки более или менее функциональны‚ в зависимости от того‚ какие функции они поддерживают․ Таким образом‚ язык‚ который считается функциональным‚ – это просто язык‚ который позволяет легко или даже обязательно программировать в функциональном стиле․

Но также вполне возможно использовать ФП на многих языках‚ которые традиционно не считаются функциональными․ Зачастую это просто требует большей дисциплины со стороны программиста‚ чтобы‚ например‚ держаться подальше от изменяющихся переменных․ Большинство таких языков также имеют полезные библиотеки для тех‚ кто склонен к более функциональному стилю программирования․