Распространяется ли Haskell по последнему слову техники в 2011 году? - PullRequest
22 голосов
/ 03 декабря 2011

Я прочитал много статей о распространяемом Haskell. Большая работа была проделана, но, похоже, в области распространения вычислений. Я видел пакет remote , который, кажется, реализует передачу сообщений в стиле Erlang, но это 0.1 и ранняя стадия.

Я хотел бы внедрить систему, в которой есть много отдельных процессов, которые предоставляют разные услуги и связаны между собой несколькими основными процессами. Это кажется естественным для Эрланга, но не для Хаскелла. Но мне нравится безопасность типов Хаскелла.

Было ли какое-либо недавнее внедрение управления процессами в стиле Erlang в Haskell?

Ответы [ 2 ]

16 голосов
/ 03 декабря 2011

Если вы хотите узнать больше о пакете remote, также известном как CloudHaskell, см. статью и тезис Джеффа Эпштейна .Она направлена ​​на то, чтобы предоставить именно ту абстракцию актера, которую вы хотите, но, как вы говорите, это на ранних стадиях.В настоящее время активно обсуждаются улучшения в списке рассылки parallel-haskell , поэтому, если у вас есть конкретные потребности, которых remote не удовлетворяет, мы будем рады, если вы подключитесь и поможете нам решить его.будущие направления.

Более зрелый, но более низкий уровень, чем remote - это пакет haskell-mpi.Если вы придерживаетесь интерфейса Simple, сообщения могут быть отправлены с произвольными Serialize экземплярами, но абстракция все еще намного ниже, чем remote.

. Существуют некоторые экспериментальные системы.например, как описано в разделе «Реализация высокоуровневой параллельной распределенной памяти Haskell в Haskell» (Патрик Майер и Фил Триндер, IFL 2011, не могут найти PDF-файл онлайн).Он сочетает monad-par подход детерминированного параллелизма потоков данных с ограниченной способностью сделать I-структуры сериализуемыми по сети.Подобные абстракции обещают выполнять распределенные вычисления, но, поскольку основное внимание уделяется вычислению чисто функциональных значений, а не обеспечению процессов в стиле Erlang, они, вероятно, не подойдут для вашего приложения.

Такжедля полноты изложения я должен указать на вики-страницу Haskell по облаку и HPC Haskell , в которой описывается то, что я здесь описываю, а также подраздел по распространяемому Haskell , который, как представляется, нуждается в этом.обновления.

7 голосов
/ 03 декабря 2011

У меня часто возникает ощущение, что IPC и актеры перепроданы. Существует множество привлекательных систем обмена сообщениями, которые имеют привязки Haskell, например MessagePack , 0MQ или Комиссионные . ИМХО, единственное, что вам нужно добавить, - это правильную адресацию процессов и решить, кто / что управляет этой возможностью адресации.

Кстати: несколько кодеров принимают, например, 0MQ в их средах Erlang просто потому, что он дает возможность структурировать обмен сообщениями через посредников сообщений, а не полагаться на чистый процесс для обработки обмена сообщениями в супермасштабном масштабе.

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

Вкратце: я бы, вероятно, увидел, соответствуют ли MessagePack или 0MQ моим потребностям в Haskell и позаботятся об остальном в моем коде.

...