SObjectizer: I Love This Game!

Автор: Евгений Охотников
Интервэйл

Источник: RSDN Magazine #4-2005
Опубликовано: 30.12.2005
Версия текста: 1.0
Введение
О чем речь
Немного истории
Коллизии с терминологией
Синхронность vs. асинхронность
Коротко о SObjectizer
Основные понятия
Состав SObjectizer
Hello, world!
Тактико-технические параметры
Что же в нем такого?
Событийно-ориентированное программирование
Многопоточность
Распределенность
Надежность?
Ложка дегтя
Технические проблемы
Социально-политические проблемы
Организационные проблемы
Terra Incognita
Ниша SObjectizer
Найдется ли место для синхронности?
Заключение
Благодарности

Введение

О чем речь

В этой статье я попытаюсь немного расказать об инструменте, в разработке которого мне повезло участвовать. Об инструменте, который я использую каждый день. Об инструменте, который изменил способ моего мышления так же, как когда-то объектно-ориентированное программирование. Это — SObjectizer, внутренний продукт компании Интервэйл (http://www.intervale.ru), который используется в качестве основного инструмента при создании C++-проектов.

В настоящее время разработчики SObjectizer стоят перед вопросом: стоит ли из внутреннего инструмента сделать SObjectizer одним из продуктов компании? Вопрос далеко не праздный и не однозначный. Главное препятствие состоит в специализации SObjectizer — инструмента для разработки ПО. С моей точки зрения у закрытых, проприетарных инструментов очень мало шансов на успех. Слишком уж большая конкуренция со стороны OpenSource-движения. Поэтому SObjectizer, если он станет самостоятельным продуктом, обязательно будет распространяться по одной из OpenSource-лицензий (сейчас выбор делается между BSD- и GPL-лицензиями).

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

Расказывая про SObjectizer, я не могу быть бесстрастным и полностью объективным, ведь над SObjectizer я работаю с момента его зарождения. Поэтому в данной статье я излагаю свой взгляд на SObjectizer, его достоинства и недостатки, его прошлое, настоящее и будущее. Моя точка зрения может не совпадать с точкой зрения других разработчиков и пользователей SObjectizer. А иногда и с мнением руководства компании Интервэйл.

Немного истории

Началось все с того, что в гомельском Конструкторском Бюро Системного Программирования (КБСП) в 1994-96 годах сложилась команда, которая под руководством Аркадия Косарева попыталась создать объектно-ориентированную SCADA-систему (Supervisory Control and Data Acquisition). Шли мы к получению результата долго и трудно. Но дошли и получили работающую версию продукта, получившего название SCADA Objectizer (см. http://msk.nestor.minsk.by/kg/2000/37/kg03710.html). Именно в SCADA Objectizer были заложены основные идеи и принципы — агенты, состояния, сообщения, события, диспетчер (как раз все то, что мы назвали агентно-ориентированным подходом). Но главное, что тогда произошло изменение способа мышления лично у меня — я стал испытывать затруднения с решением задач, в которых нельзя было применить агентный подход.

В 2000 году этот этап в истории SObjectizer печальным образом закончился: по экономическим причинам коллектив разработчиков SCADA Objectizer распался, и дальнейшее развитие SCADA Objectizer, по тем же причинам, оказалось невозможным.

Второе рождение произошло в 2002-м году в компании Интервэйл, когда несколько бывших сотрудников КБ решили, что агентный подход имеет смысл возродить. Тогда и появился SObjectizer — полностью переделанная реализация идей SCADA Objectizer. С тех пор SObjectizer используется нами при создании всех C++-проектов. И лично у меня нет сомнений в правильности выбора в пользу SObjectizer. Но об этом речь пойдет ниже.

Коллизии с терминологией

Синхронность vs. асинхронность

Коротко о SObjectizer

Основные понятия

Состояние

Сообщение

Событие

Агент

Состав SObjectizer

SObjectizer Run-Time

Диспетчер

Принцип работы

Hello, world!

Тактико-технические параметры

Что же в нем такого?

Событийно-ориентированное программирование

Многопоточность

Распределенность

Надежность?

Ложка дегтя

Технические проблемы

Социально-политические проблемы

Организационные проблемы

Terra Incognita

Ниша SObjectizer

Найдется ли место для синхронности?

Заключение

Благодарности


Полная версия этой статьи опубликована в журнале RSDN Magazine #4-2005. Информацию о журнале можно найти здесь