OberonCore
https://forum.oberoncore.ru/

Моделирование интерфейсов
https://forum.oberoncore.ru/viewtopic.php?f=29&t=3640
Страница 3 из 6

Автор:  Trurl [ Воскресенье, 06 Ноябрь, 2011 21:39 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

А Зуев то тут при чем?

Автор:  Илья Ермаков [ Воскресенье, 06 Ноябрь, 2011 21:55 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

Language Implementers: Eugene Zueff, Roman Mitin, Nina Gonova

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

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

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

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

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

QWERTYProgrammer писал(а):
чем плоха модульность в Зонноне?
Это, наверное, пролезает отсутствие нормальной модульности в шарпе?

Автор:  Илья Ермаков [ Суббота, 10 Декабрь, 2011 21:59 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

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

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


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

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

QWERTYProgrammer писал(а):
Кстати, а можно немного подробнее: чем плоха модульность в Зонноне?
Если объективно, то по модулям паритет.

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

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

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

Автор:  igor [ Воскресенье, 11 Декабрь, 2011 18:41 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

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

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

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

Автор:  igor [ Воскресенье, 11 Декабрь, 2011 19:54 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

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

Автор:  Info21 [ Воскресенье, 11 Декабрь, 2011 21:25 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

Очень большие модули (если там не тупая сложность вроде прейскуранта или какой-нибудь таблицы иероглифов) -- дефект проектирования.

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

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

Иных хлебом не корми - дай поспорить.

Автор:  Евгений Темиргалеев [ Понедельник, 12 Декабрь, 2011 15:26 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

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

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

Ну не совсем зашита. В любой следующей версии дотнета, они могут сделать выгрузку модулей как в Яве - сборщиком мусора. Если модуль перестал быть кому-то нужен сборщик мусора может его выгрузить. Теоретически это ничему не противоречит.

-----------


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

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

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

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

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

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

Автор:  igor [ Понедельник, 12 Декабрь, 2011 17:06 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

Сергей Губанов писал(а):
Сложность тупо кроется в размере.
Похоже на тот случай, который Info21 оговорил особо ("тупая сложность вроде прейскуранта").

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

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

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. Можно подобное реализовать в Обероне?

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

jackbauer писал(а):
Это реализация интерфейсов не эквивалентна тому, что имеется, например, в C#.
Когда вы говорите "не эквивалентна", вы имеете в виду только синтаксические отличия (количество параметров в процедуре) или существо дела? Приведите возражения по существу.

Автор:  Info21 [ Воскресенье, 18 Декабрь, 2011 12:43 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

Александр Ильин писал(а):
Приведите возражения по существу.
Ставлю на Trurl'я 8)

Автор:  Владислав Жаринов [ Воскресенье, 18 Декабрь, 2011 13:53 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

По наличию отсутствия слов-"паразитов" ставка кажется оправданной. :)

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

igor писал(а):
Думаю, что в случае необходимости такой большой модуль легко (благодаря его "архитектурной простоте") можно разбить на несколько модулей меньшего размера.
Затруднительно будет разбить модуль (3), в котором описаны 60 типов объектов взаимосвязанных друг с другом по указателям :D. Там описана одна структура данных. Одна, но большая. Большая, но одна.

Автор:  Владислав Жаринов [ Воскресенье, 18 Декабрь, 2011 14:55 ]
Заголовок сообщения:  Re: Моделирование интерфейсов

Ну, тогда, наверное, речь об архитектурной простоте не идёт...

Страница 3 из 6 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/