Добавил:
study@slavapmk.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Все Лекции

.pdf
Скачиваний:
0
Добавлен:
12.05.2026
Размер:
15.98 Mб
Скачать

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

•Языки программирования LISP, Clojure, Haskell и т.п.

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

•Функциональный стиль в C++, Python, Java

8

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

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

9

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

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

функции как основные используемые конструкции;

выражения вместо инструкций;

неизменяемые значения имеют приоритет перед переменными;

декларативное программирование имеет приоритет перед императивным программированием.

10

Функциональное программирование – это тренд!

Практически любой современный язык программирования поддерживает по крайней мере некоторые «функциональные» свойства:

C++: лямбда-выражения, функция как тип данных, функции без побочных эффектов, определение типа (type inference).

C#: функция как тип данных (“делегаты”), функции-литералы

(function literals), определение типа (type inference).

Java 8: лямбда-выражения.

Swift: функция как значение, замыкания и локальные функции.

Rust: функция как переменная, как аргумент, как тип возвращаемого значения, анонимные функции.

11

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

•Неизменяемые значения (Immutable objects)

•Функции как объекты (Functions as

“first-class entities”)

•Функции и операции

•Функции-литералы

•Замыкания (closures)

12

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

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

— означает, что значение нельзя изменить на месте.

Но переменные можно изменить на месте.

13

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

Функция — это конструкция, которая возвращает выходные данные при наличии входных данных.

Это самое простое (и важное) понятие в функциональном программировании.

Фактически она сопоставляет элемент из

одного набора с другим набором.

add = lambda x,y: x+y

Примеры вызова:

>>>add(2,3)

5

>>> add(‘Hello’, ‘World’) ‘HelloWorld’

14

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

Выражение — это конструкция в коде, которая возвращает значение. Выражение можно легко заменить вызовом функции.

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

Ссылочная прозрачность — это свойство выражений,

которое означает, что их можно заменить выходными данными без изменения поведения программы.

15

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

Свойства функционального стиля программирования:

Функции являются объектами первого класса (First Class Object). С функциями можно работать, также как и с данными: передавать их в качестве аргументов другим функциям, присваивать переменным и т.п.

В функциональных языках не используются переменные (как именованные ячейки памяти), т.к. там нет состояний, а т.к. нет переменных, то и нет операции присваивания, как это понимается в императивном программировании.

Основным подходом для управления вычислениями является рекурсия, а не циклы и условные операторы.

16

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

Свойства функционального стиля программирования:

Используются функции высшего порядка (High Order Functions), т.е. функции, которые могут в качестве аргументов принимать другие функции.

Функции являются “чистыми” (Pure Functions) – т.е. не имеют побочных эффектов.

Акцент на том, что должно быть вычислено, а не на том, как вычислять.

17