|
|
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
Господа, а кто, что думает о модели акторов? Я вот, сидел, ковырял акторы из AKKA и думал, как бы что-то похожее на Rust изобразить. В итоге вышла вот такая вот заметка . Вроде, может быть полезной для людей с около нулевым опытом работы с AKKA и/или Rust. Предлагаю обсудить как модель акторов в целом, так и содержание заметки в частности. Технический блог тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2013, 23:46 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
Мне видится, что модель акторов 1) Решает проблемы гонок, которых не может быть по определению (актор обрабатывает одно сообщение за раз) и видимости 2) прозрачный переход от локального исполнения, когда все общение происходит в рамках одного процесса, к межпроцессорному(ну или с малой кровью). А это межпроцессорное взаимодействие может происходить в рамках одной машины или же в рамках нескольких машин. Модель акторов это интересный топик, но освещается как-то однобоко. За последние несколько лет много все просмотрел и прочитал по теме, но все эти обсуждения были в стиле саксэс стори, которые повторяли из раза в раз одни и тоже банальности - мантры "не используйте треды с локами, используйте только акторов", "вы забудете о дедлоках", а также прочие доводы в стиле Капитана Очевидность. Но остаются вопросы, которые не освещаются (или освещаются, но в кулуарах, когда кругом все свои). Оставив все вопросы производительности (т.к. очевидно, что общение решение всегда проигрывает тому, что написано под конкретный случай), и всяких законов Мура, когда эту модель лучше/проще/легче не использовать? Какие есть проблемы и подводные камни всплывают при ее использовании? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2013, 13:29 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
schwa, Насколько я понимаю ситуацию, всплывающие проблемы так или иначе связанны с человеческим фактором. И именно это делает использование акторов в реальной жизни очень затруднительным. Поэтом, основные моменты когда их не надо использовать следующие: - количество уже существующего кода очень и очень велико; - поддержки концепции акторов нет в самом языке; - вся команда не имеет четкого представления об этой модели и нет времени на предварительное обучение тех, кто не в теме. Если с кодом все более-менее понятно, то с языком стоит пояснить отдельно. Все языки имеющие поддержку модели акторов, имеют и некую защиту от дурака, коей нет, к примеру, в C++. Поэтому, при хотя бы небольшой неоднородности состава команды начнутся проблемы с ревью, переписыванием кода и прочим. Модель основанная на shared memeory давно обкатана и, главное, всем понятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2013, 15:57 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
Согласен во всем. Но насколько в реальной жизни модель акторов будет удобней? Мне кажется, что даже при всех ее достоинствах, это не так все просто. Поясню. Модель акторов позволяет создавать огромные зубодробительные конечные автоматы о которых как-то там можно думать (и этот процесс будет несколько легче чем с тредами и локами). Но востребованы ли они в практическом программировании? Просто есть очень большая вероятность того, что на реальном проекте в итоге любая система акторов будет упрощаться до тех пор пока она не будет представлять из себя другую систему, которая разбита на меньшие подсистемы aka модули, которые общаются между собой самым простейшим способом, устранив тем самым сложные переходы между некоторыми состояниями. И это будет сделано для того, чтобы программу проще тестировать, поддерживать, добавлять новый функционал и проч. Т.е. фактически в результате будет несколько модулей, которые общаются через заданные интерфейсы. Но ведь тоже самое будет проделано с системой, которая строится на локах с тредами и компанией! И ее модули скорее всего также будут общаться средствам сообщений. Это все к тому, что акторы и текущая парадигма спокойно могут жить вместе - акторы контролируют глобальные переходы между состояниями и взаимодействие между модулями, а внутри модулей стандартные локи и прочие подобные примитивы. p.s. Интересный пейпер по тематике акторов в scala, затрагивающий тему смешения парадигм. Why Do Scala Developers Mix the Actor Model with Other Concurrency Models? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2013, 22:20 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
Ещё критика акторов: Clojure's approach to Identity and State ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2013, 19:11 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
kaa.pythonГоспода, а кто, что думает о модели акторов? Я вот, сидел, ковырял акторы из AKKA и думал, как бы что-то похожее на Rust изобразить. В итоге вышла вот такая вот заметка . Вроде, может быть полезной для людей с около нулевым опытом работы с AKKA и/или Rust. Предлагаю обсудить как модель акторов в целом, так и содержание заметки в частности. Технический блог тут если вам нужны акторы, то ваш выбор - erlang. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2013, 22:12 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
schwaНо остаются вопросы, которые не освещаются (или освещаются, но в кулуарах, когда кругом все свои). Оставив все вопросы производительности (т.к. очевидно, что общение решение всегда проигрывает тому, что написано под конкретный случай), и всяких законов Мура, когда эту модель лучше/проще/легче не использовать? Какие есть проблемы и подводные камни всплывают при ее использовании?так какие вопросы? я так и не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2013, 22:13 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
kaa.python- вся команда не имеет четкого представления об этой модели и нет времени на предварительное обучение тех, кто не в теме.не аргумент. понятие акторов - слишком просто. язык эрланг(где акторы - ключевой моменте) - изучается всего за две недели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2013, 22:15 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
kaa.pythonМодель основанная на shared memeory давно обкатана и, главное, всем понятна.да, но и здесь можно пойти дальше. хотя-бы взять на вооружение транзакционную память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2013, 22:16 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
schwaНо востребованы ли они в практическом программировании? да schwaПросто есть очень большая вероятность того, что на реальном проекте в итоге любая система акторов будет упрощаться до тех пор пока она не будет представлять из себя другую систему, которая разбита на меньшие подсистемы aka модули, которые общаются между собой самым простейшим способом, устранив тем самым сложные переходы между некоторыми состояниями. как вы эту вероятность рассчитали? как по мне - так чушь. schwaТ.е. фактически в результате будет несколько модулей, которые общаются через заданные интерфейсы. Но ведь тоже самое будет проделано с системой, которая строится на локах с тредами и компанией! И ее модули скорее всего также будут общаться средствам сообщений. нет, все совсем не так. schwaЭто все к тому, что акторы и текущая парадигма спокойно могут жить вместе - акторы контролируют глобальные переходы между состояниями и взаимодействие между модулями, а внутри модулей стандартные локи и прочие подобные примитивы. глупость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2013, 22:18 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
kaa.pythonГоспода, а кто, что думает о модели акторов? Я вот, сидел, ковырял акторы из AKKA и думал, как бы что-то похожее на Rust изобразить. В итоге вышла вот такая вот заметка . Вроде, может быть полезной для людей с около нулевым опытом работы с AKKA и/или Rust. Предлагаю обсудить как модель акторов в целом, так и содержание заметки в частности. Технический блог тут Ты в блоге упоминаешь, что авторЛично мне очень нравится концепция акторов. Что интересно, познакомился я с ней куда раньше повальной моды на функциональщину, в году так 2003, когда начал плотно работать с библиотекой ACE (это та, которая The ADAPTIVE Communication Environment). Ну а сейчас акторами никого не удивишь, все про них только и говорят. И это хорошо, так как данная модель сильно упрощает отладку и разработку, при относительно не большой просадке по производительности и памяти. Скажи, как акторы связаны с функциональными языками ? (вопрос риторический). Ну и -- блин, спелчекер-то хотя бы включай, если пишешь для людей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2013, 11:24 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
MasterZivСкажи, как акторы связаны с функциональными языками ? (вопрос риторический). Ну и -- блин, спелчекер-то хотя бы включай, если пишешь для людей... Мода на акторов пришла с Erlang и, позже, с развитием AKKA. В C++ как такой моды не было, так и нет. Включаю, что ты там нашел такое, что разрывает твой мозг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2013, 11:36 |
|
||
|
Системы акторов в Scala и Rust
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNschwaНо востребованы ли они в практическом программировании? да schwaПросто есть очень большая вероятность того, что на реальном проекте в итоге любая система акторов будет упрощаться до тех пор пока она не будет представлять из себя другую систему, которая разбита на меньшие подсистемы aka модули, которые общаются между собой самым простейшим способом, устранив тем самым сложные переходы между некоторыми состояниями. как вы эту вероятность рассчитали? как по мне - так чушь. schwaТ.е. фактически в результате будет несколько модулей, которые общаются через заданные интерфейсы. Но ведь тоже самое будет проделано с системой, которая строится на локах с тредами и компанией! И ее модули скорее всего также будут общаться средствам сообщений. нет, все совсем не так. schwaЭто все к тому, что акторы и текущая парадигма спокойно могут жить вместе - акторы контролируют глобальные переходы между состояниями и взаимодействие между модулями, а внутри модулей стандартные локи и прочие подобные примитивы. глупость. Хорошо аргументируешь. 99 % процентов реальных приложений именно так и работают. Message-passing используется в любом мало-мальски нормальном приложении (может быть внутри одного процесса он используется очень мало т.к. есть работаюшие альтернативы), а в сообщении между процессами вполне. К тому же раз ты не утруждаешь себя написать хоть один аргумент к использованию акторов кроме как чушь и проч., то я напишу это сам какой плюс могут дать акторы реальному программисту на реальном проекте, а не хипстеру, который выучит ерланг и хаскель за неделю, и потащит их в продакшен. В реальном приложении акторы дают возможность писать обработчики, которые не просто выполняются 1 раз за событие, а могут спокойно хранить свое состояние и между вызовами. Т.е. если у вас есть поток событий, который нужно как-то обрабатывать и обработка следующего события может зависеть от прошлых вызовов, то акторы могут вам упростить код. Хотя если вам такая возможность нужна 1 раз в одном треде, то проще использовать треды и потокобезопасные очереди, чтобы не тащить новые зависимости в проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 11:02 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=54&tid=1341725]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 197ms |
| total: | 362ms |

| 0 / 0 |
