LINUX.ORG.RU

Распределённые приложения на Erlang

 ,


0

0

Продолжение обзора функционального языка программирования Erlang. На этот раз рассматривается создание распределённых (многопоточных) приложений на Erlang. В статье освещаются основы многопоточного программирования на этом языке, а так же приводится пример простейшей программы, работающей с потоками в Erlang.

>>> Подробности

Ответ на: комментарий от anonymous

> Ну и чем это лучше MPI?

Оно ортогонально MPI, соответственно, ответить ничего нельзя.

sv75 ★★★★★
()
Ответ на: комментарий от anonymous

> Ну и чем это лучше MPI?

Оно ортогонально MPI, соответственно, ответить ничего нельзя.

> а это лучше чем DCOM? callback есть?

И DCOM оно ортогонально, на мой взгляд. Посмотри, как сообщения передаются.

sv75 ★★★★★
()
Ответ на: комментарий от MrBool

> Для этого был создан язык Ada, эланг курит в сторонке...

Опять про упвашую ракету позабыли, да?

sv75 ★★★★★
()
Ответ на: комментарий от Bohtvaroh

> Да? А я как-то преспокойно писал на яве и занимался эрлангом, в чём фишка? Может проблема в тебе?

Ну тут есть еще Bioreactor, он на любой язык говорит "зачем он нужен?" - вот это для него фраза ;)

sv75 ★★★★★
()
Ответ на: комментарий от anonymous

> а на Erlang как не напиши клинчей не бывает??? > волшебство или вещества?

Другой подход. Нет шаримых ресурсов, есть только отдельные процессы, которые шлют друг-другу сообщения.

Еще тут про питон вспоминали. Сразу скажу, что актор модель изящно реализовать на нем сложно хотя бы из-за отсутствия паттерн-матчинга. На руби что-то похожее сделали, но оно на case-when и все равно выглядит кривовато по сравнению с Эрлангом.

anonymous
()
Ответ на: комментарий от AVL2

> хороший язык. > не для дельфи-питон-пхп-руби-шарп-ява нубов...

Не надо кидать рубистов в одну кагорту с дельфи-пхп-питоном. Тем более что первую книгу по Эрлангу издал тот человек, который написал первую книгу по Руби. И тот человек, который сказал, что хороший программист должен в год осваивать один новый язык.

Кстати, Эрланг это тот язык, который отлично подходит как первый функциональный язык(он самы простой из кагорты Schema/Haskell/Ocaml). И как язык для освоение процессно-ориентированной парадигмы программирования или actor-model.

anonymous
()
Ответ на: комментарий от anonymous

> Кстати, Эрланг это тот язык, который отлично подходит как первый функциональный язык

+1

sv75 ★★★★★
()
Ответ на: комментарий от sv75

>Опять про упвашую ракету позабыли, да?

Ладно бы, просто упавшую из-за ошибки в расчётах. Так самый прикол в том, что всё штатно шло, и не будь в Аде обработки исключений - взлетела бы нормально :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

Hint: не надо осваивать ни одного функционального языка. Все прогрессивное человечество давно пишет на объектно-ориентированных, а вы до сих пор мозги себе не проабгрейдили! И, знаете, еще 100 лет будем писать на объектно-ориентированных языках.

anonymous
()
Ответ на: комментарий от KRoN73

> Ладно бы, просто упавшую из-за ошибки в расчётах. Так самый прикол в том, что всё штатно шло, и не будь в Аде обработки исключений - взлетела бы нормально :)

Так-с, а что читать поэтому вопросу? Я полагал, что необработанное исключение переполнения при конвертации в 16-ти битное целое возникло, я не верно понял?

sv75 ★★★★★
()
Ответ на: комментарий от anonymous

> Hint: не надо осваивать ни одного функционального языка. Все прогрессивное человечество давно пишет на объектно-ориентированных, а вы до сих пор мозги себе не проабгрейдили! И, знаете, еще 100 лет будем писать на объектно-ориентированных языках.

Ну вы прямо как наш профессор по функц/лог. программированию говорите!

sv75 ★★★★★
()
Ответ на: комментарий от anonymous

> А вы профессора слушайте, он старше и умнее, он глупости не скажет.

БУГАГА!

sv75 ★★★★★
()
Ответ на: комментарий от anonymous

>Другой подход. Нет шаримых ресурсов, есть только отдельные процессы, которые шлют друг-другу сообщения.

ээээ... я чего-то не понимаю? системы пересылают только неблокированные сообщения? но всё равно нужны какие-то точки синхронизации

p.s. если нет разделяемых ресурсов, то им и взаимодействовать не нужно ;)

anonymous
()
Ответ на: комментарий от anonymous

> ээээ... я чего-то не понимаю? системы пересылают только неблокированные сообщения?

Нет, сокеты tcp/ip тоже етсь ;)

> но всё равно нужны какие-то точки синхронизации

Получил ответ - вот тебе и синхронизация? :)

sv75 ★★★★★
()
Ответ на: комментарий от voidus

> Нечеловеческий какой-то язык...

Очень даже человеческий.

sv75 ★★★★★
()
Ответ на: комментарий от anonymous

>Питон со всем этим в моём случае справляется (телеком, пару сотен клиентов в секунду).

В случае с Erlang'ом: если меньше 1000 в секунду - это как-то даже смешно:)

Led ★★★☆☆
()
Ответ на: комментарий от anonymous

>Hint: не надо осваивать ни одного функционального языка. Все прогрессивное человечество давно пишет на объектно-ориентированных, а вы до сих пор мозги себе не проабгрейдили! И, знаете, еще 100 лет будем писать на объектно-ориентированных языках.

Ну-ну - посмотрим как вы будете дебажить глюки с thread'ами в ООП проге...

Насчет Erlang'а как первого функционального я не согласен, здесь простота скорее минус, лучше Haskell - поначалу тяжко, зато быстро вправляет мозги в правильном направлении + более полное избавление от императивных костылей. А потом если есть желание можно легко писать на Erlang'е...

imp ★★
()
Ответ на: комментарий от imp

> Ну-ну - посмотрим как вы будете дебажить глюки с thread'ами в ООП проге...

У меня нет глюков с тредами в ООП коде на Java.

> зато быстро вправляет мозги в правильном направлении

И что же такого хорошего создали эти несчастные с "вправленными мозгами"? Ничего? Создали бы, да санитары злые не позволяют, к койке привязывают?

anonymous
()
Ответ на: комментарий от anonymous

>И что же такого хорошего создали эти несчастные с "вправленными мозгами"? Ничего? Создали бы, да санитары злые не позволяют, к койке привязывают?

Не, у нас в обычном мире не так как у вас в боьничке - никто никого не привязывает:)

Led ★★★☆☆
()
Ответ на: комментарий от WFrag

>Можно с таким же успехом брать и по очереди посылать сообщение нескольким процессам (есть, конечно, тонкости, но не зная задачи их можно опустить).

То есть даже групповых операций нету ?

Оказывается у лисапеда еще и колёса треугольные (видимо для учтойчивости от падений ;))

sS ★★★★★
()
Ответ на: комментарий от Led

А если вас санитары не привязывают и погулять отпускают, что почему вы, функциональщики, так до сих пор ничего и не сделали? Слабо признаться, что вы просто ничего и не можете и не умеете?

anonymous
()
Ответ на: комментарий от anonymous

>У меня нет глюков с тредами в ООП коде на Java.

Все так говорят. Однако я практически не встречал правильно написанного многопоточного кода на Java. Минимальный аудит -- и видны race condition-ы, dead lock-и и live lock-и до кучи. Да, он работает, но можно придумать ситуации когдв такой код работать не будет.

Ооочень мало программистов умеет писать правильную синхронизацию на Java, доходит даже до того, что примитивнейший случай producer-consumer-а правильно написать не могут...

WFrag ★★★★
()
Ответ на: комментарий от Bohtvaroh

>Аргументация для четырёх звёзд просто блещет. ;-)

Сам сделаешь сравнение со спецификацией MPI 2.0 или тоже буш рассказывать про "ортогональность" ? ;)

sS ★★★★★
()
Ответ на: комментарий от anonymous

>И что же такого хорошего создали эти несчастные с "вправленными мозгами"? Ничего? Создали бы, да санитары злые не позволяют, к койке привязывают?

Ну например написали самую полную и работающую реализацию Perl6 которую на имперетивных языках (включая сам Perl6) до сих пор написать не могут...

imp ★★
()
Ответ на: комментарий от anonymous

>Мои "поделки" на Питоне почему-то никогда не падали, а сетевые приложения на нём годами без перезапуска и под нагрузкой в области телекомов работают. Не осилили Питон?

А у нашего бирди винда ни разу не глючила. Сносим линукс?

apt-proxy,pyicqt и т.д. - все работает оч. условно...

AVL2 ★★★★★
()
Ответ на: комментарий от WFrag

>В Эрланг посылка сообщения не зависит от того, где физически расположен процесс.

А в MPI зависит ? ;) Марш читать спецификайию MPI ;)

sS ★★★★★
()
Ответ на: комментарий от imp

То есть, как я и думал, на понтоязычках не пишется ничего кроме компиляторов понтоязычков. То есть, ничего полезного.

anonymous
()
Ответ на: комментарий от anonymous

>У меня нет глюков с тредами в ООП коде на Java.

Ха ха. Даже если написать 100% верный многопоточный код в ООП то оверхед на синхронизацию почти полностью убьет выигрыш от многопоточности. Потому как race-conditions случаются довольно редко, но когда все таки случаются то это ж.па, поэтому защищатся приходится постоянно - а это мутексы и семафоры, которые в сущности не нужны может быть в 99.9% случаев...

Конечно если ваша поделка на жаве умещается в 100 строк то может быть там и нет проблем с многопоточностью (и то не факт). А если у вас большой проект в коллективной разработке то эти проблемы постоянно возникают (у нас такие товарищи в соседнем кабинете сидят вечно у них глюки с потоками)...

imp ★★
()
Ответ на: комментарий от imp

Есть такой pattern в ООП - очередь сообщений. Очень полезно для изоляции потоков. Так что никаких у меня race conditions не может быть просто по определению, всё слишком просто организовано. И никаких блокировок за пределами реализации очереди тоже нет, прикинь.

anonymous
()
Ответ на: комментарий от WFrag

И, кстати, механизм сообщений в Эрланг -- не единственное его достоинство. Как минимум, язык интересен концепцией обработки ошибок (проверенной на практике). Читай диссертацию, на которую я выше ссылку давал.

WFrag ★★★★
()
Ответ на: комментарий от sS

>Похожая парадигма параллелизма, только у MPI она гораздо более развита...

Пример фич MPI, которые нельзя реализовать на Эрланге (коли уж понадобится)?

И сколько работающих MPI процессов одновременно можно запустить? 100? 1000? А на Эрланге десятки и сотни тысяч, и это не понты, а ключевой момент в Эрланговском подходе к надежности (каждая минимальная задачка -- отдельный процесс + подход let it crash).

WFrag ★★★★
()
Ответ на: комментарий от Bohtvaroh

>Да? А я как-то преспокойно писал на яве и занимался эрлангом, в чём фишка? Может проблема в тебе?

А кто-то читает "космополитен" и тоже не парится...

Ява - зло.

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

>Есть такой pattern в ООП - очередь сообщений.

Эрланг, это и есть очередь сообщений. Там по другому быть не может.

AVL2 ★★★★★
()
Ответ на: комментарий от WFrag

>Пример фич MPI, которые нельзя реализовать на Эрланге (коли уж понадобится)?

2 тут уже назвали ;)

Так дать ссылку на спецификацию MPI или сам найдёш ?

>И сколько работающих MPI процессов одновременно можно запустить?

Сколько в память кластера влезет ;)

>каждая минимальная задачка -- отдельный процесс

Так ссылку на спецификацию MPI дать ? ;)

А то немного смешно слушать рассказы как круто ездить на одноколёсном велике с треугольными колёсами ;)

sS ★★★★★
()
Ответ на: комментарий от anonymous

>Есть такой pattern в ООП - очередь сообщений. Очень полезно для изоляции потоков. Так что никаких у меня race conditions не может быть просто по определению, всё слишком просто организовано. И никаких блокировок за пределами реализации очереди тоже нет, прикинь.

Поучился бы сначала чем глупости болтать... Есть куча проблем с ООП которые твои "очереди сообщений" не решают + они неэффективны с возрастанием числа потоков. Мне лень тебя учить, те кто в теме и так все знают, а ты дальше пиши свои "беспроблемные" поделки на жаве...

imp ★★
()
Ответ на: комментарий от sv75

>Так-с, а что читать поэтому вопросу? Я полагал, что необработанное исключение переполнения при конвертации в 16-ти битное целое возникло, я не верно понял?

Вот подробности: http://forums.airbase.ru/2007/03/12/topic-54337--Avariya-Arian-5-4-iyunya-199...

Там прикол в том, что ошибка возникла в модуле, который к тому времени уже не был нужен. И если бы механизма исключений не было, то ничего бы не произошло. А так - необработанное исключение ввело в ступор основной и резервный компы и ракета самоликвидировалась.

KRoN73 ★★★★★
()
Ответ на: комментарий от WFrag

MPI это для пальцатых профессоров с терабайтами оперативы. А для нормальных людей ерланг подойдёт.

anonymous
()
Ответ на: комментарий от sS

> Похожая парадигма параллелизма, только у MPI она гораздо более развита...

Да, да, и mnesia в MPI тоже описана?

sv75 ★★★★★
()
Ответ на: комментарий от KRoN73

> Там прикол в том, что ошибка возникла в модуле, который к тому времени уже не был нужен.

Спасибо, понял.

sv75 ★★★★★
()
Ответ на: комментарий от sS

>2 тут уже назвали ;)

Не помню ничего, что нельзя было с лёгкостью сделать в Эрланг.

>Сколько в память кластера влезет ;)

А в сравнении с Эрлангом?

>Так ссылку на спецификацию MPI дать ? ;)

Читал. И даже писал задачки под это дело.

>А то немного смешно слушать рассказы как круто ездить на одноколёсном велике с треугольными колёсами ;)

От гордых владельцев самоката?

WFrag ★★★★
()
Ответ на: комментарий от sS

> Так дать ссылку на спецификацию MPI или сам найдёш ?

А на MPI вообще пишут что-то кроме числодробилдок (я не слышал)?

Что-то типа EJabber, RabbitMQ (JMS на Erlang), ну и Ериксон все еще на Ерланге пишет?

sv75 ★★★★★
()
Ответ на: комментарий от sv75

> mnesia в MPI тоже описана?

Иди читай спецификацию MPI ;)

sS ★★★★★
()
Ответ на: комментарий от sv75

>А на MPI вообще пишут что-то кроме числодробилдок (я не слышал)?

А на токарном станке делают работу которая предназначена для фрезерного ?

>Что-то типа EJabber, RabbitMQ (JMS на Erlang), ну и Ериксон все еще на Ерланге пишет?

А кто/что это ? ;)

hint: речь идёт о парадигме _параллелизма_ а не о поисках "серебряной пули". Лично мне парадигма паралеллизма в субже видится весьма убогой (по сравнению с MPI). Другой вопрос что для набора решаемых оным задач этого достаточно.

sS ★★★★★
()
Ответ на: комментарий от sv75

>А на MPI вообще пишут что-то кроме числодробилдок (я не слышал)?

лично я писал только лабораторки, проверял на локалхосте и на локальной сети

anonymous
()
Ответ на: комментарий от WFrag

>Не помню ничего, что нельзя было с лёгкостью сделать в Эрланг.

_Сделать_ и иметь _готовую_ сущность (мегаэффективную и отлаженную) это две большие разницы.

>Читал. И даже писал задачки под это дело.

Тогда непонятно к чему вопросы о коммуникаторах и групповых операциях. Или "писал" это были лабы соответствующего курса в ВУЗ-е ? ;)

sS ★★★★★
()
Ответ на: комментарий от sS

> А на MPI вообще пишут что-то кроме числодробилдок (я не слышал)?

> А на токарном станке делают работу которая предназначена для фрезерного ?

А кто как не ты обосрал всех заявляющих об ортогональности MPI и Erlang? А теперь - копытами назад?

> А кто/что это ? ;)

Это приложения Erlang

> hint: речь идёт о парадигме _параллелизма_ а не о поисках "серебряной пули".

Речь идет о том, что ерланг - не для параллельных числодробилок.

>> mnesia в MPI тоже описана?

> Иди читай спецификацию MPI ;)

Ctrl+F: database: ничего не нашло. А, вы просто троль, так бы рсразу и сказали.

sv75 ★★★★★
()
Ответ на: комментарий от WFrag

>А в сравнении с Эрлангом?

ХЗ.

ЗЫ: Эрланг живёт на кластерах ? Можно по идее проверить. 176 Гигов оперативы есть ;)

sS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.