Первая статья про SObjectizer на Хабре, как мне представляется, зашла более-менее хорошо. Есть желание написать еще две-три статьи с продолжением. В одной было бы хорошо показать на примере, как модель акторов вообще (ну и SO-5 в частности), помогает решать конкретные проблемы. В следующей немного подробнее рассказать о подводных камнях программирования на акторах и об уроках, которые нам довелось выучить за время использования SObjectizer-а. Дальше можно было бы поговорить о деталях реализации и особенностях использования акторов в C++.
Однако, не смотря на то, что со стратегическим планом все более-менее понятно, на тактическом уровне есть некоторые сложности. В частности, ищется хорошая тема для следующей статьи. Т.е. нужен хороший пример задачи, которую можно было бы положить на агентов, но при этом текст статьи и объем кода примеров не вышел бы за пределы разумного.
Почему поиск такой темы вызывает проблемы именно у меня? Основных причин три: а) времена, когда я активно решал с помощью SObjectizer-а прикладные задачи, закончились года четыре назад, сейчас я больше погружен в разработку самого SObjectizer-а, в вопросы проектирования и в менеджмент (плюс, из-за суеверий, не очень люблю рассказывать о еще незавершенных проектах), b) есть, хоть и небольшой, риск нарваться на неприятности, если рассказать подробности работы тех или иных решений из прошлого опыта и c) из-за профдеформаций темы, которые интересны мне, могут быть совершенно не интересны большинству читателей.
Посему обращаюсь с просьбой к читателям: если у вас есть подходящая тема или задачка, для которой вам было бы интересно увидеть решение на агентах, то опишитесь в комментариях или мне на почту eao197 на gmail тчк com. Может вы сами что-то навелосипедили и вам было бы интересно сравнить свой подход с нашим? Может вы что-то делали на других языках/технологиях и хотели бы сравнить к кодом на C++? В общем, буду признателен за любую интересную идею.
В качестве примера: интересная задачка от ув.тов.thedeemon, которая уже разбиралась в блоге.
Upd. В качестве возможной темы: организация стадийности обработки и механизм работы в стиле fire-and-forget (так же известный, как SEDA-way). Т.е. когда есть N агентов, каждый из которых отвечает за свою операцию, агент i получает сообщение, он выполняет свои действия и отсылает сообщение агенту (i+1), при этом агенты в цепочке могут работать на разных диспетчерах (тем самым обеспечивается и загрузка имеющихся мощностей, и независимость разных операций друг от друга).
По поводу фразы "Банан велик, а..." из заголовка. Была такая байка:
Как-то раз американский физик-экспериментатор Р. Вуд (1868—1955), довольно эксцентричный человек, любитель всяких острых ощущений, решил проделать на себе рискованный опыт — испытать действие наркотика. С большим трудом раздобыв опиум, он накурился этого зелья и вскоре впал в забытье. Придя через некоторое время в сознание, он вспомнил, что, находясь в одурманенном состоянии, напал на какую-то чрезвычайно глубокую и важную научную идею, но на какую именно — начисто вылетело из головы. Тогда Вуд решил повторить опыт в надежде, что ему посчастливится вновь обрести ускользнувшую мысль. И действительно, как только начало сказываться наркотическое действие опиума, забытая мысль не замедлила возникнуть в уме ученого. Чувствуя, что сознание вот-вот покинет его, Вуд сумел в последний момент сконцентрировать волю, записать идею на бумажке и впал в беспамятство. Очнувшись, он с ликованием подумал об удачном исходе столь трудного и опасного опыта и, дрожа от нетерпения и пережитого, поспешно развернул бумажку с драгоценной записью. На ней он прочел; “Банан велик, а кожура еще больше...”
Вот что-то похожее было вчера со мной: помню, что уже засыпая придумал хорошую тему для следующей статьи про SO-5. А сегодня с утра не могу ее вспомнить... И хотя есть ощущение, что тема была хорошей, велика вероятность, что на самом деле она была чем-то вроде "Банан велик, а кожура еще больше" :)