OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 25 Июнь, 2018 04:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: MODeL
СообщениеДобавлено: Среда, 24 Октябрь, 2007 16:25 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Я сейчас на работе создаю язык описания объектов сообщений (Message Object Definition Language = MODeL) и пишу для него транслятор в C++, C#,... Потребность в языке MODeL возникла в связи с тем, что у нас есть несколько программ общающихся друг с другом по сети с помощью сообщений и
1) нужно формальное описание типов сообщений просто чтобы в них не запутаться;
2) нужен кодогенератор позволяющий по формальному описанию сгенерировать текст на языке C++, C#,... вместе с сериализаторами (экстернализерами, сериализерами, и прочими функциями), причём так чтоб программы написанные на разных языках (C++, C#, ...) могли общаться с помощью одних и тех же объектов сообщений.

Можно было бы использовать ASN, но он на столько громоздок, что никто не захотел в нём всерьёз разбираться. Вот я и предложил как бы изобретённый мной язык MODeL (а на самом деле просто украденую часть Оберона в которой описываются типы). Местные сишники долго думали (сильно спорили против "END"), но в результате согласились. Описание MODeL сейчас занимает 5 страниц, так что по сравнению с ASN он абсолютно вне конкуренции (там ~600 страниц).

Вот пример текста на языке MODeL:
Код:
DOCUMENT VoipMessages;

   IMPORT DefaultSettings;

   VoipMessage = RECORD
      callId: STRING("n/a");
      confId: STRING("n/a");
      id: STRING
   END;

   VoipRegistrationUpdate = RECORD (VoipMessage)
      proto: STRING;
      nameList: LIST OF VoipRegistrationName;
      addresses: VoipAddresses;
      contacts: VoipAlias;
      maxRegTime: INT32(0);
      active: INT32(-1);
      isNatUser: BOOLEAN(FALSE), VERSION(31..*);
      registrarName: STRING(""), VERSION(31..*)
   END;

   SETTINGS (DefaultSettings)
      rootMessageType = "VoipMessage";
      
      LANGUAGE ("C++");
         namespace = "mvoip"
      END
   END;

END VoipMessages.

На прошлой неделе я реализовал раздельную компиляцию, а сегодня попытался было протолкнуть ABSTRACT RECORD.
Не вышло. Сишники по поводу ABSTRACT сказали, что
Цитата:
Увы, мы пользуемся старым, кривым C++... И поэтому не хотим при
написании компонента A что-то запрещать написателю компонента B...

И мой начальник мне ABSTRACT запретил. Вот сижу теперь и горюю... :cry: :cry: :cry:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Среда, 24 Октябрь, 2007 16:30 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8954
Откуда: Россия, Орёл
Интересно.
У меня ребята похожей вещью занимались последний месяц - сваяли сетевую шину сообщений для ББ.
Вообще, сообщения "рулят" - убеждаюсь дальше-больше :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Среда, 24 Октябрь, 2007 17:04 

Зарегистрирован: Среда, 17 Январь, 2007 03:59
Сообщения: 225
Илья Ермаков писал(а):
Интересно.
У меня ребята похожей вещью занимались последний месяц - сваяли сетевую шину сообщений для ББ.
Вообще, сообщения "рулят" - убеждаюсь дальше-больше :-)


А в новый дистрибутив она войдет?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Среда, 24 Октябрь, 2007 17:20 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Что-то мне это напоминает...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Среда, 24 Октябрь, 2007 17:36 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8954
Откуда: Россия, Орёл
Штирлиц писал(а):
А в новый дистрибутив она войдет?

Опубликована будет, но в составе чего - не знаю. Надо будет ещё разбираться, что с чем и как войдёт :-)
Пока условно отнесена к Abf.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Среда, 24 Октябрь, 2007 21:50 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1076
Вот нашел ftp://ftp.parc.xerox.com/pub/ilu/2.0b1/ ... l_toc.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Четверг, 25 Октябрь, 2007 08:44 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7829
Откуда: Троицк, Москва
Илья Ермаков писал(а):
Вообще, сообщения "рулят" - убеждаюсь дальше-больше :-)


я тоже, причем совершенно на другом материале :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Четверг, 25 Октябрь, 2007 10:48 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Trurl писал(а):

Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Понедельник, 17 Декабрь, 2007 12:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Сергей Губанов писал(а):
ABSTRACT запретил


Прогресс. Сишники всё же согласились, что атрибут ABSTRACT необходим, добавили.

Теперь думаем над следующим атрибутом (названия пока не придумали, так что буду пока писать "XXX")

MyRecord = XXX RECORD ... END;

На записи объявленные с атрибутом "XXX" нельзя делать POINTER TO (нельзя передавать их по ссылке на их папу), т.е. они всегда используются явно, "невиртуально".

Осталось придумать подходящее слово вместо XXX. Может ANTIPOINTER или NONREF :D


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Понедельник, 17 Декабрь, 2007 15:27 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2289
Откуда: Россия, Санкт-Петербург
Сергей Губанов писал(а):
MyRecord = XXX RECORD ... END;
Осталось придумать подходящее слово вместо XXX. Может ANTIPOINTER или NONREF :D

Предлагаю MATERIAL или NOPTR : )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Понедельник, 17 Декабрь, 2007 19:13 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Сергей Губанов писал(а):
Осталось придумать подходящее слово вместо XXX. Может ANTIPOINTER или NONREF :D
Чем XXX лучше XXL :о))
А если как антоним к ABSTRACT, то может CONCRETE?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Вторник, 18 Декабрь, 2007 10:35 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Мы сошлись на PRIME.

Прайм-записи сериализуются/десериализуются без фабрики -- непосредственно, и используются только для внедрения внутрь других записей (агрегирование) или иных контейнеров (массивов, списков и т.п.) по значению. На прайм-записи запрещается объявлять указатели и они, как следствие, с целью оптимизации, не могут иметь виртуальных функций.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Вторник, 18 Декабрь, 2007 10:53 

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7829
Откуда: Троицк, Москва
Сергей Губанов писал(а):
Прогресс. Сишники всё же согласились ...


... гнутся шведы ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MODeL
СообщениеДобавлено: Вторник, 18 Декабрь, 2007 12:04 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Сергей Губанов писал(а):
Мы сошлись на PRIME.

Уже передумали на PLAIN.

info21 писал(а):
... гнутся шведы ...

Они уже даже были согласны ещё и на EXTENSIBLE, но пока реальной потребности в нём не возникло.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB