May. 30th, 2013

exceed_er: (Default)
Меня как бы попросили что-то доступное про это написать. Я как бы попробовал. Выложу на растерзание.

Значит, когда обезьяны слезли с дерева и развели костер, они легко научились выполнять последовательности действий. Берем горький жесткий корень, кладем в угли костра, достаем - мягкий и сладкий. Запомнили. Повторяем последовательность по голодной необходимости. Все счастливы.

Поэтому, когда появились языки программирования, тоже было проще так делать - берем число из корзинки Х, добавляем в корзинку Y, получается в итоге X+Y. Все вроде всем понятно.

Но так вышло, что к моменту когда появились эти языки программирования, уже появился новый вид обез... людей. Их называли "математики" и они на дух не переносили эти громоздкие недоказуемые последовательности. Они с молоком матери впитывали функции, везде видели функции и все строили из функций. z=x+y превращалось для них в z=add(x,y), но и функции с двумя переменными они посчитали не нужными и придумали каррирование и стало z=add(x)(y) где результатом add(x) является функция с одним аргументом. То есть add(2)(3) читается как "создай функцию add2(x), потом примени ее к числу 3". Ну и тут к ним привалило вообще счастье в виде лямбда исчисления. Но это отступление, и всю эту лямбду и каррирование можно смело вытереть из головы, хотя придумали их лет за 50 до первых компьютеров. Ну такие они, эти математики. В общем, пришли они к программистам и говорят - не годятся ваши "возьми х, положи в y", хотим всю программу описывать только функциями.

Программисты по натуре люди добрые и ленивые. И они очень не любят спорить и упираться. Им проще написать, чтобы отстали. Так появились функциональные языки программирования. Чтобы долго не разбираться, когда какие функции применять, программисты заодно создали функциональные декларативные языки. XSLT - функциональный декларативынй язык. А, к примеру, SQL - просто декларативный язык, тогда как LISP - просто функциональный язык.

Ну ладно, это вступление, по сути не важное. Что важно - это как оно работает.

Скажем, приходим мы на бал. И нам надо раздать юношам платочки, а девушкам - розочки. Можно описать процесс так:
подходим к каждому человеку, если это "он" - запихиваем ему платочек, если "она" - вручаем розочку.
Это императивно.

А можно описать тот же процесс декларативно - функционально:
Read more... )

Profile

exceed_er: (Default)
exceeder

November 2016

S M T W T F S
  12345
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 19th, 2025 02:17 pm
Powered by Dreamwidth Studios