OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 12 Ноябрь, 2019 08:36

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




Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 06 Ноябрь, 2011 21:39 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1202
А Зуев то тут при чем?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 06 Ноябрь, 2011 21:55 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9154
Откуда: Россия, Орёл
Language Implementers: Eugene Zueff, Roman Mitin, Nina Gonova

Пардон, я давно очень смотрел Report и забыл распределение ролей. Что Language Designer - Гуткхнехт. А Зуев запомнился, ибо он на эту тему пописывал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 18:36 

Зарегистрирован: Среда, 04 Июль, 2007 16:43
Сообщения: 233
Илья Ермаков писал(а):
Зоннон любопытен некоторыми вещами, но никакой фундаментальности в нём нет. Модульность там плохая.

Кстати, а можно немного подробнее: чем плоха модульность в Зонноне?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 20:25 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
QWERTYProgrammer писал(а):
чем плоха модульность в Зонноне?
Это, наверное, пролезает отсутствие нормальной модульности в шарпе?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Суббота, 10 Декабрь, 2011 21:59 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9154
Откуда: Россия, Орёл
QWERTYProgrammer писал(а):
Илья Ермаков писал(а):
Зоннон любопытен некоторыми вещами, но никакой фундаментальности в нём нет. Модульность там плохая.

Кстати, а можно немного подробнее: чем плоха модульность в Зонноне?


Тем, например, что там инкапсуляция навешана на классы. Модули опять низведены чисто до пакетов. Классы вообще могут существовать без модулей, насколько я помню.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 11 Декабрь, 2011 18:08 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
QWERTYProgrammer писал(а):
Кстати, а можно немного подробнее: чем плоха модульность в Зонноне?
Если объективно, то по модулям паритет.

1) В дотнете однажды загруженный модуль нельзя выгрузить. Блэкбоксе с этим тоже не всё гладко.

2) В С# модуль подразумевается, но синтаксически не оформляется. В Зононе хотя синтаксическая конструкция "модуля" добавлена, но она не является модулем (единицей компиляции/загрузки/исполнения/выгрузки), а просто static class. Нужно ли выделять модуль синтаксически или не нужно - область священных воин.

3) Размер одного модуля в дотнете может быть очень большим, а в Блэкбоксе его исходник должен быть полностью размещён в одном единственном документе. Тут тоже плюс на минус.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 11 Декабрь, 2011 18:41 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Сергей Губанов писал(а):
3) Размер одного модуля в дотнете может быть очень большим
Кстати, весьма сомнительное достоинство. Очень большие модули наводят на мысль о недостаточной декомпозиции задачи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 11 Декабрь, 2011 19:40 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 11 Декабрь, 2011 19:54 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Сергей Губанов писал(а):
igor писал(а):
Очень большие модули наводят на мысль о недостаточной декомпозиции задачи.
Это да, но ещё и о размере задачи.
Это да, но :) модуль - это функциональная единица (не обязательно большая) сколь угодно большой программы, решающей сколь угодно сложную задачу.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 11 Декабрь, 2011 21:25 
Аватара пользователя

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

Проблемы с выгрузкой в ББ -- это всего лишь недоработанность еще довольно незрелой реализации.
В Шарпе проблема, похоже, "зашита"?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Понедельник, 12 Декабрь, 2011 11:26 
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Понедельник, 12 Декабрь, 2011 15:26 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4525
Откуда: Россия, Орёл
Info21 писал(а):
Проблемы с выгрузкой в ББ -- это всего лишь недоработанность еще довольно незрелой реализации.
В Шарпе проблема, похоже, "зашита"?
Да, зашита.


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Ну не совсем зашита. В любой следующей версии дотнета, они могут сделать выгрузку модулей как в Яве - сборщиком мусора. Если модуль перестал быть кому-то нужен сборщик мусора может его выгрузить. Теоретически это ничему не противоречит.

-----------


Чтоб два раза не вставать :D заодно скажу и про размер моего модуля...

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

Архитектурно программа очень проста: есть структура данных для запоминания состояния и куча процедур изменяющих это состояние при получении сообщений.

Сложность тупо кроется в размере.

Структура данных состоит примерно из 60 типов основных объектов и ещё нескольких десятков вспомогательных (из других библиотек). Все основные типы объектов завязаны друг с другом (объекты ссылаются с помощью указателей). В первом протоколе 345 типов сообщений и ещё несколько сотен структур из которых эти сообщения состоят. Во втором протоколе 140 типов сообщений и ещё несколько десятков структур из которых эти сообщения состоят.

Считаем модули:
1) Модуль описывающий сообщения протокола-1 (35'372 строчек).
2) Модуль описывающий сообщения протокола-2 (7'817 строчек).
3) Модуль описывающий структуру данных чтоб помнить состояние. Включает код процедур вставки/поиска/удаления элементов (14'802 строчек).
4) Модуль для кучи процедур, которые обрабатывают сообщения, изменяют структуру данных (13'429 строчек).
5) Модуль загрузчик (402 строчки).
Еще есть несколько десятков вспомогательных (библиотечных) модулей. Все объекты после "смерти" кэшируются для повторного использования, соответственно есть код который это обеспечивает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Понедельник, 12 Декабрь, 2011 17:06 

Зарегистрирован: Вторник, 13 Ноябрь, 2007 20:38
Сообщения: 1056
Сергей Губанов писал(а):
Сложность тупо кроется в размере.
Похоже на тот случай, который Info21 оговорил особо ("тупая сложность вроде прейскуранта").

Вобщем, раз такие исключения встречаются, то хорошо, что в дотнет есть поддержка больших модулей. Но вряд ли это обстоятельство как-то ограничивает возможности Блэкбокс (хотя с этим никто и не спорил, просто подчеркну). Думаю, что в случае необходимости такой большой модуль легко (благодаря его "архитектурной простоте") можно разбить на несколько модулей меньшего размера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Суббота, 17 Декабрь, 2011 23:40 

Зарегистрирован: Суббота, 20 Март, 2010 21:48
Сообщения: 22
Trurl писал(а):
Вариант в духе классического Оберона.
Код:
PROCEDURE DoDraw(o:Object; idraw:IDrawable);
PROCEDURE DoMove(o:Object; imove:IMovable);

  DoDraw(o, o.idraw);
  DoMove(o, o.imove);


Это реализация интерфейсов не эквивалентна тому, что имеется, например, в C#. В C# DoDraw и DoMove будут выглядеть так:
Код:
    static void DoDraw(IDrawable obj);
    static void DoMove(IMoveable obj);

    static void main()
    {
        MyObject obj = new Object();
        DoDraw(obj);
        DoMove(obj);
    }


Заметь, что в DoDraw и DoMove передаётся только один параметр: obj, и никаких дополнительный указателей на виртуальные таблицы drawable и moveable. Можно подобное реализовать в Обероне?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Суббота, 17 Декабрь, 2011 23:51 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2316
Откуда: Россия, Томск
jackbauer писал(а):
Это реализация интерфейсов не эквивалентна тому, что имеется, например, в C#.
Когда вы говорите "не эквивалентна", вы имеете в виду только синтаксические отличия (количество параметров в процедуре) или существо дела? Приведите возражения по существу.


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

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Александр Ильин писал(а):
Приведите возражения по существу.
Ставлю на Trurl'я 8)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 18 Декабрь, 2011 13:53 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
По наличию отсутствия слов-"паразитов" ставка кажется оправданной. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 18 Декабрь, 2011 14:07 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
igor писал(а):
Думаю, что в случае необходимости такой большой модуль легко (благодаря его "архитектурной простоте") можно разбить на несколько модулей меньшего размера.
Затруднительно будет разбить модуль (3), в котором описаны 60 типов объектов взаимосвязанных друг с другом по указателям :D. Там описана одна структура данных. Одна, но большая. Большая, но одна.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Моделирование интерфейсов
СообщениеДобавлено: Воскресенье, 18 Декабрь, 2011 14:55 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 2046
Ну, тогда, наверное, речь об архитектурной простоте не идёт...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 101 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

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


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

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


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

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