Нет ФП

забудьте это словосочетание

Дмитрий Грошев (@lambdadmitry)

  • ненужные обобщения не нужны
  • забудьте про ФП
  • PROFIT
  • раньше было проще
  • ФП не существует
  • будущее сложно и прекрасно

Раньше было проще

C

for (int i = 0; i < 10; i++) {
    foo(i);
}
  • тип
  • цикл
  • функция

«Парадигмы»

ФП уже не существует

это миф

Лямбда

  • название из lambda calculus
  • простая идея
  • есть уже везде

Erlang

  • let it fail
  • изоляция ошибок
  • супервизирование

Clojure

  • разделение обязанностей
  • decomplection

Haskell

  • типы
  • Ordnung muss sein!

Immutability

  • естественное свойство мира с текущим временем
  • mutability — абстракция или оптимизация
  • ФП разваливается на концепции
  • зачем они?

Будущее

Сложное, но прекрасное

Сложность

  • accidental
  • essential

Accidental

  • big ball of mud
  • CRUD'ы и индусы
  • рельсы, хипстеры, твиттер

Essential

  • потолок 4GHz
  • распределённый софт (web-app'ы тоже!)
  • отзывчивые интерфейсы
  • AI

Абстракции

  • в коде
  • протекают

Запрос к удалённому серверу

Цепочка запросов к удалённым серверам

Цепочка запросов к удалённым серверам с таймаутами

Цепочка запросов к удалённым серверам с таймаутами и альтернативами

Идеи/концепции

  • в голове
  • не могут протекать
  • ортогональны

Идеи/концепции

  • разделение обязанностей
  • изоляция ошибок
  • контроль корректности
  • иммутабельность
  • монады и алгебра
  • коммутативность
  • идемпотентность
  • логический вывод
  • поток событий
  • реактивность и правила

Заключение

  • ненужные обобщения не нужны
  • забудьте про ФП
  • PROFIT
  • раньше было проще
  • сейчас ФП не существует
  • будущее сложно
  • ФП это ширма для невежества
  • исследуйте новое без шор

Вопросы?

Слайды: si14.github.io/klutch-2013-11-slides

Твиттер: @lambdadmitry