Просмотров: 6395

А вы на каких монадах сидите?


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

Никаких откровений. Просто пару полезных ссылок и обобщений по функциональщине для наведения порядка в голове.

А вы на каких монадах сидите? функциональное программирование лямбда

А начнем мы этот короткий, но гордый ссылочно-тематический обзор с яркого поста по теме: Почему акторы — будущее программирования.

Вывод в конце поста звучит так:

Это позволяет тривиально создавать очень надёжные штуки. Всё, что я написал на Akka, работает без перезапусков годы, причём к этому не надо никаких особых усилий прикладывать. Отваливался DNS, отваливались сервера — а штуки продолжали работать.
На данный момент ваш выбор заключается в основном в Akka или Erlang, но над этим работают.

Если вы прониклись, вот хорошая ссылка про Akka.

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

Далее цитата из исторической бумаги (A Universal Modular ACTOR Formalism for Artificial Intelligence) от создателя модели акторов Карла Хьюита (соавторы: Peter Bishop, Richard Steiger):

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

Из этого куска видно, что Хьюит относит акторов к императивной модели. Однако, погуглив, легко обнаружить, что модель акторов пытаются прилепить куда угодно, только не к императивщине. Скрытно подозреваю, что акторы являются не до конца реализованным подходом к агентно-ориентированному программированию, которое в свою очередь является развитием ООП. Поэтому далее ещё одна цитата, для достижения нужной интенсивности бурления вброса.

В своё время у Хьюита были такие трения с создателями оригинального Пролога:

В 1988 году Роберт Ковальски, создатель языка Prolog, выдвинул тезис, что «вычисления могу быть сгруппированы по логическим выводам». Это справедливо для последовательных вычислений и для некоторых моделей параллельных. Но в 1988 году Hewitt и Agha опубликовали статью Guarded Horn clause languages: are they deductive and Logical?, в которой показали, что для модели акторов это неверно в следующем смысле: текущее состояние программы может дедуктивно не следовать из предыдущего. Что это значит на практике: отладка программы на основе модели акторов не так эффективна, как в случае последовательных программ.

Не зря Don Syme (гуру F#) подразделяет способ устройства акторов на:

  • the imperative way;
  • the functional way.

Ещё материалы по функциональному программированию на моем блоге.

В качестве многозначительного бонуса

@SannySanoff возмущается по поводу Хаскеля и печального настоящего ФП:

Сначала они отняли нашу радугу, испоганили слово «нормально», теперь они отняли нашу лямбду. (по ссылке гомосеки).
И действительно, второй результат в дакдакгоу на слову lambda уже lambdalegal.org. И это даже не смешно уже.

~

Ключевики для роботов: функциональное программирование и акторы, монады и лямбды — будущее и преимущества + специфика функционального программирования (ФП) на Haskell. Какие стили и подходы, методы программирования на ФП есть?

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , ,
Эта запись опубликована: Четверг, 14 января 2016 в рубрике Литдыбр.

1 комментарий

Следите за комментариями по RSS
  1. Акторы - это более высокоуровневое понятие, ни к императивщине ни к функциональщине они не относятся. Формально, актор предоставляет некий атомарный сервис, а в каком стиле его использовать решает тот, кто с ним взаимодействует (или тот, кто организует взаимодействие акторов).

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

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз