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

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

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

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

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

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

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

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

2)Мир императивен (деятельность человека заключается в модификации окр.среды), поэтому функциональщина идёт с накладным расходом и для мозга
— Безумный Математик (@Soukhinov) November 26, 2015

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

Далее цитата из исторической бумаги (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.


@Soukhinov все зависит от точки зрения и подхода: если ты считаешь, что программы пишутся для компьютера — ты прав, если для человека — нет.
— Ilya Shcherbak (@tthread) November 26, 2015

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

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

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

~

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

© Blogerator