Описание

четверг, 21 марта 2013 г.

Где мой сыр?

Многие, кто несколько раз слышал о функциональном программировании интерисуются "как это нельзя изменять переменные?" или "как это вообще нет переменных?" и вообще зачем это нужно. Данная запись является переводом записи из блога Джо Армстронга (разработчик Erlang), которая не отвечает на приведенные выше вопросы, но наталкивает на мысли почему так и почему это полезно.


Императивный подход программирования довольно сложная штука.

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

В императивных языках программирования переменные являются именами мест куда вы можете что-то положить.


Например:
int x;
x = 7;
В языке C это означает, что есть место x куда можем положить целое число. То есть я ложу мое число в место x и хочу, чтобы оно осталось навсегда, где я его оставил.

"Почему навсегда?"  - вы спросите. 

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

Функциональные языки программирования не имеют этой проблемы. Если вы оставляете 7 в x, тогда 7 там останется навсегда. И это очень хорошо!

Источник: where's my heese

Комментариев нет:

Отправить комментарий