OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 18 Ноябрь, 2017 05:52

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




Начать новую тему Ответить на тему  [ Сообщений: 33 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 14 Январь, 2014 12:21 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8861
Откуда: Россия, Орёл
В свете того, что "все пути приводят к HandleMsg":
http://obertone.ru/doku.php?id=bbextendnohost

стоит, думаю, обдумать этот вопрос :)

Если любой абстрактный тип каркаса имеет HandleMsg, то никаких проблем с расширяемостью нет.
А пока в базовой поставке этого нет, то проблемы с расширяемостью будут постоянные.

Т.е. стоит аккуратно подумать о том, либо:
1) Во все типы каркасы, где этого ещё нет (Stores, Files) ввести HandleMsg - в базовой сборке.
2) Либо вообще ввести единый базовый тип Object с таким HandleMsg.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 14 Январь, 2014 12:36 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2421
Откуда: Россия, Ярославль
Сообщения это штука хорошая, но я бы еще предложил рассмотреть вместо наследования агрегирование.
То есть не заставляем всех перейти на общего предка, а просто предлагаем деталь с хэндлом.
Правда сразу возникает проблема наследования и переопределения метода хэндла. Но тут можно выбрать оберон-вэй с процедурным полем хэндлера вместо объекта и метода.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 14 Январь, 2014 12:46 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8861
Откуда: Россия, Орёл
В каком смысле "деталь"? )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 14 Январь, 2014 12:53 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2421
Откуда: Россия, Ярославль
Для Stores и наследников кто-то предлагал ввести доменную шину (.HandleDomainMsg), было бы достаточно.
Для всяких Files, Ports, Windows необходимость сообщений назрела. Но иметь общий предок для File и Window это какой-то оверхед.
А при создании новых системных абстрактных интерфейсов можно вообще исключить методы, все кроме хэндлера.

Илья Ермаков писал(а):
В каком смысле "деталь"? )

Вспоминая вот эту тему viewtopic.php?f=47&t=4175
Возможна ли реализация более удобного сервиса деталей без модификации ядра? Ну или с расширением функций ядра в виде плагина.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 14 Январь, 2014 14:35 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4419
Откуда: Россия, Орёл
И, товарищи, не зацикливайтесь на объектах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 14 Январь, 2014 16:12 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2421
Откуда: Россия, Ярославль
Евгений Темиргалеев писал(а):
И, товарищи, не зацикливайтесь на объектах.

А какой Ваш вариант?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 14 Январь, 2014 16:44 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8861
Откуда: Россия, Орёл
Пётр Кушнир писал(а):
Вспоминая вот эту тему viewtopic.php?f=47&t=4175
Возможна ли реализация более удобного сервиса деталей без модификации ядра? Ну или с расширением функций ядра в виде плагина.


Да это всё узкоспециальная вещь )


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Среда, 15 Январь, 2014 22:22 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 09:48 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2421
Откуда: Россия, Ярославль
Еще можно сделать необязательный метод любому объекту, типа FINALIZE только HANDLE.
Тогда базовый Object не нужен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 10:18 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8861
Откуда: Россия, Орёл
Да, но это изменение языка уже и компилятора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 11:23 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2421
Откуда: Россия, Ярославль
Но у ядра же есть скрытые функции по управлению методами, может компилятору и не нужно добавлять метод самостоятельно, достаточно средствами ядра найти метод.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 11:56 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8861
Откуда: Россия, Орёл
Это будет очень дорого обходиться...

В принципе, можно обойтись модификацией ядра и загрузчика, чтобы загрузчик находил процедуру с условленным именем - и потом в Kernel.Type добавлял указатель на неё в какое-то спец. поле (в виртуальную таблицу по минус-адресам от Type уже не получится, там "вотчина" компилятора).

Но какая-то уже больно рантаймо-специфичная семантика уже, не хотелось бы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 11:59 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4419
Откуда: Россия, Орёл
Завязываясь на какие-либо функции ядра, нужно не забывать, что ядро --- это конкретная платформозависимая реализация. А не нечто перманентное в долгосрочных перспективах.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 12:02 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2421
Откуда: Россия, Ярославль
Ну понятно, что в ядре всегда будет присутствовать ряд переносимых функций, типа финализаторов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 12:08 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4419
Откуда: Россия, Орёл
Ядро должно обеспечить определённый функционал. Способ реализации и скрытый интерфейс это никак не фиксирует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 12:16 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8861
Откуда: Россия, Орёл
Да, но в случае финализаторов - это поддержка семантики, закреплённой в языке.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 12:26 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2421
Откуда: Россия, Ярославль
Ну для решения одной задачи "добавить HANDLE" достаточно того, что ядро уже имеет возможность пройтись по таблице методов. Не нужно менять язык. И зависимости от хоста (ядра) мы уже обсуждали. Осталось только получить возможность найти в нужный момент нужный метод конкретного объекта, и вызвать его.

У финализаторов в ядре есть преимущество, конечно. Они вычисляются при создании объекта, и хранятся в списке.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 12:35 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8861
Откуда: Россия, Орёл
Не забывайте только (не могу сейчас понять, забываете или нет :) ), что смещения в вирт. таблице для некоторого типа ипользует компилятор. Он их прошивает в код виртуальных вызовов..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 12:43 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2421
Откуда: Россия, Ярославль
Я просто не сильно понимаю на этом уровне :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тотальный HandleMsg и базовый Object
СообщениеДобавлено: Вторник, 18 Февраль, 2014 12:55 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8861
Откуда: Россия, Орёл
Когда Вы пишите v.Do, то компилятор шьёт код:
полезть по указателю v-4
взять оттуда тег типа - адрес Kernel.Type
пойти на -N от этого адреса (где виртуальная таблица методов)

Вот этот -N известен на этапе компиляции (т.к. интерфейс v статически известен, в символьном файле).
И он прошивается в код константой.


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

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


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

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


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

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