OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 01:16

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




Начать новую тему Ответить на тему  [ Сообщений: 253 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12, 13  След.
Автор Сообщение
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Пятница, 28 Февраль, 2020 23:49 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Илья Евгеньевич Ермаков
От динамических средств расширения семантики Компонентного Паскаля — к расширяемому синтаксису
https://youtu.be/v71zsKrF60Y


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Суббота, 29 Февраль, 2020 00:25 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Йошкин кот! Даже с картинкой специальной! :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Суббота, 29 Февраль, 2020 19:46 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Создаётся впечатление, что просто Компонентный Паскаль не очень соответствует потребностям Ильи.

Раз речь идёт о внешнем по отношении к программе расширении через дополнения к компилятору, да ещё без попыток сделать особо удобным написание расширений, то, может быть, лучше просто сделать ещё один frontend к компилятору, в котором воплотить все хотелки? В чём преимущество написания отдельных расширений?

Памятуя наши беседы о метапереходах, задам вопрос - не было желания или попыток воплотить токены через рефлексию?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Воскресенье, 01 Март, 2020 00:14 

Зарегистрирован: Среда, 31 Январь, 2018 19:54
Сообщения: 244
Comdiv писал(а):
... беседы о метапереходах, задам вопрос - не было желания или попыток воплотить токены через рефлексию?

По сути, в первой части доклада речь идёт о статическом описании предметной области (+ константы) через токены, но шире чем просто в референтной модели.

Удобным решением в этом случает мог бы быть расширенный словарь данных, в котором все описания данных и их представление хранятся в одном месте. Не усложняя визуальные средства, для этого можно использовать табличное представление на нескольких связанных табах типа как на картинке ниже. Такой словарь можно записать в файл удобном для парсера формате. Со многим остальным справится препроцессор и парсер.

Здесь можно "срезать" много лишнего кодирования и обеспечить актуальность модели данных,
обращаясь к словарю в запросах к базе данных и константам -> как в примере запроса в этом докладе https://youtu.be/v71zsKrF60Y?t=2415

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

В таком словаре данных можно формировать таблицы БД, связи между ними, представление данных в окошках десктопного приложении, представление в Web и отчётах. Что-то подобное было реализовано для многих ЯП и в т.ч. для Clarion.
Картинка - Скриншот экранной формы словаря данных:
https://i.ytimg.com/vi/RF_6xDxS8Wo/maxresdefault.jpg

Словарь данных с привязкой к редактору и конструктору форм может стать удобным средством как дополнение к IDE BlackBox, которое привлечёт многих разработчиков.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Воскресенье, 01 Март, 2020 12:19 

Зарегистрирован: Среда, 31 Январь, 2018 19:54
Сообщения: 244
Иван Денисов писал(а):
Илья Евгеньевич Ермаков
От динамических средств расширения семантики Компонентного Паскаля — к расширяемому синтаксису
https://youtu.be/v71zsKrF60Y

Иван, кажется вы раньше просили автора написать статью о токенах )))
После этого видео, можно опубликовать примеры использования токенов из доклада?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Воскресенье, 01 Март, 2020 14:51 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Да, из доклада много всё равно не понятно. Уже начинаю догадываться про эти токены, но системного не избыточного изложения не хватает в письменном виде.


Последний раз редактировалось Иван Денисов Воскресенье, 01 Март, 2020 15:30, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Воскресенье, 01 Март, 2020 15:16 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Без статьи непонятно, нужна ли статья. Частота упоминания наталкивает на мысль, что тема, видимо, достойна частого упоминания. Но без подробностей создаётся впечатление, что это что-то естественное и проходное. Например, в Java для чего-то подобного используется тип Enum - специальные классы. В них, порой, не хватает наследования и приходится использовать обычные singleton.
Может, за статью сойдёт определение на 1-2 абзаца или сопоставление с похожими образцами из известных источников.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Воскресенье, 01 Март, 2020 15:31 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Илья, вот такой вопрос. Токены, это что-то типа хеш-таблицы с записями?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Понедельник, 02 Март, 2020 15:31 
Модератор
Аватара пользователя

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


Нет, токен - это просто объект, созданный в куче и доступный через глобальную переменную.

Хеш-таблица возникает только для трансляции из численного перманентного UID в сам токен.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Понедельник, 02 Март, 2020 19:27 

Зарегистрирован: Среда, 31 Январь, 2018 19:54
Сообщения: 244
Илья Ермаков писал(а):
Иван Денисов писал(а):
Илья, вот такой вопрос. Токены, это что-то типа хеш-таблицы с записями?
Нет, токен - это просто объект, созданный в куче и доступный через глобальную переменную. Хеш-таблица возникает только для трансляции из численного перманентного UID в сам токен.

по поводу токенов можно найти информацию в инете. Вы всех заинтересовали оригинальным способом их использования. Насколько помню, на конференции 2018 года в Орле вы упоминали в докладе, что этот способ позволил ускорить работу программы, в т.ч. после загрузки программы, её настройки и пр. вы отключали сборщик мусора.

Можно более подробно об этой схеме работы и её надёжности? Да, и можно тексты примеров ваших токенов из последнего доклада опубликовать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Понедельник, 02 Март, 2020 19:37 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
arlean1 писал(а):
по поводу токенов можно найти информацию в инете.


А что пишут в интернете?
То, что именно так используют объекты-синглтоны - это наверняка. Но называть это токенами, вроде, никто не называл.

А то, что называют токенами, - это обычно нечто из других областей.

Цитата:
Насколько помню, на конференции 2018 года в Орле вы упоминали в докладе, что этот способ позволил ускорить работу программы, в т.ч. после загрузки программы, её настройки и пр. вы отключали сборщик мусора.

Нет, это с токенами не связано. Токены вообще никакого отношения к сборке мусора не имеют, т.к. это глобально доступные объекты, время жизни которых совпадает с временем жизни модуля, в котором они объявлены.

Про отключение сборщика мусора - это другое. Когда для каждого типа создается пул повторно используемых объектов. И объект явно возвращается в пул, когда становится ненужным. Разрушение памяти физическое при таком подходе из-за ошибочного возвращения невозможно (хотя риск логической коллизии - совместного использования одного объекта - остаётся).

Цитата:
Можно более подробно об этой схеме работы и её надёжности? Да, и можно тексты примеров ваших токенов из последнего доклада опубликовать?

В устоявшемся варианте это пойдёт в open-source. Сейчас много всего тянет с собой.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Понедельник, 02 Март, 2020 19:42 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Илья Ермаков писал(а):
Иван Денисов писал(а):
Илья, вот такой вопрос. Токены, это что-то типа хеш-таблицы с записями?


Нет, токен - это просто объект, созданный в куче и доступный через глобальную переменную.

Хеш-таблица возникает только для трансляции из численного перманентного UID в сам токен.

Глобальная переменная - это указатель на хеш-таблицу?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Понедельник, 02 Март, 2020 20:13 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Иван Денисов писал(а):
Глобальная переменная - это указатель на хеш-таблицу?


Нет, указатель на информационный объект этого конкретного токена, типа такого:

Код:
   Token = POINTER TO EXTENSIBLE RECORD (KrlObject.Object)
      id-: LONGINT;
      mod-, var-, name-: POINTER TO ARRAY OF CHAR;
      props-: SET;
      base-: ARRAY 12 OF KrlTokens.Token;
      ext-, next-, ext_0-: KrlTokens.Token;
      level-: INTEGER;
      handler-: KrlTokens.Handler;
      opts-: ARRAY 12 OF KrlTokens.Token;
      facets-, defaultVal-: KrlTokens.Token;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Понедельник, 02 Март, 2020 21:12 

Зарегистрирован: Среда, 31 Январь, 2018 19:54
Сообщения: 244
Илья Ермаков писал(а):
Про отключение сборщика мусора - это другое. Когда для каждого типа создается пул повторно используемых объектов. И объект явно возвращается в пул, когда становится ненужным. Разрушение памяти физическое при таком подходе из-за ошибочного возвращения невозможно (хотя риск логической коллизии - совместного использования одного объекта - остаётся).

коллизии - это как недостатки глобальных объектов.
А можно немного рассказать как создать такой пул используемых объектов и как в этом случае корректно отключить, а потом включить сборщик мусора?


Последний раз редактировалось arlean1 Понедельник, 02 Март, 2020 21:27, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Понедельник, 02 Март, 2020 21:25 

Зарегистрирован: Среда, 31 Январь, 2018 19:54
Сообщения: 244
Илья Ермаков писал(а):
Иван Денисов писал(а):
Илья, вот такой вопрос. Токены, это что-то типа хеш-таблицы с записями?

Хеш-таблица возникает только для трансляции из численного перманентного UID в сам токен.

А UID генерится у вас на этапе компиляции? или на этапе написания кода?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Понедельник, 02 Март, 2020 23:33 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
arlean1 писал(а):
Иван, кажется вы раньше просили автора написать статью о токенах )))

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Вторник, 03 Март, 2020 13:00 
Модератор
Аватара пользователя

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

Хеш-таблица возникает только для трансляции из численного перманентного UID в сам токен.

А UID генерится у вас на этапе компиляции? или на этапе написания кода?


ID токена - как статической сущности - у меня используется 64-битный (UID динамических сущностей требует уже 128 бит для глобальной уникальности).

Старшие 32 бит UID - это Project Id, вычисляемый как хэш от Project Name и определяемый где-то в подсистеме проекта.
Младшие 32 бит UID - это хэш от имени переменной токена (Module.VarName).

Т.е. в BEGIN модуля указываем: KrlTokens.InitTokens(MyProjTypes.projectId) - и все глобальные экспортированные переменные токенов инициализируются (создаются их объекты, генерируются ID, устанавливаются их взаимо-ссылки, кто чьё расширение и т.п.).

Если переменную токена надо переименовать, а ID уже используется перманентно, то просто отдельно в BEGIN модуля прописывается выставление ему закреплённого старого ID.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Вторник, 03 Март, 2020 13:03 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
arlean1 писал(а):
А можно немного рассказать как создать такой пул используемых объектов и как в этом случае корректно отключить, а потом включить сборщик мусора?


Я использовал вариант с изменённым ядром, где у Kernel.Type base[15] указывает на расширенную структуру TypeEx, где уже и поддерживаются списки возвращённых объектов, откуда их повторно дёргает NEW. Ну а подавить сборку мусора - просто выставить флаг да и всё.

Однако сразу что-то не подумал, что есть вариант отдельной от ядра реализации: местоположение NewRec и NewArr указывается спец. метками при линковке пускача ББ - и можно просто разместить эту поддержку пулов в отдельном модуле.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Вторник, 03 Март, 2020 13:27 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Илья, а сейчас вроде в куче есть какое-то повторное использование записей? Я где-то читал, что если запись удаляется сборщиком, то при выделении новой записи такого-же типа, она разместится в старом месте, что уменьшает фрагментацию. Или это не работает в ББ из коробки?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: День Оберона 2019
СообщениеДобавлено: Вторник, 03 Март, 2020 13:39 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Иван Денисов писал(а):
Илья, а сейчас вроде в куче есть какое-то повторное использование записей? Я где-то читал, что если запись удаляется сборщиком, то при выделении новой записи такого-же типа, она разместится в старом месте, что уменьшает фрагментацию. Или это не работает в ББ из коробки?


Нет, сейчас менеджер кучи управляет просто блоками разных размеров. И выбор блока под NEW выполняется только на основании нужного размера. Что не исключает того, что с высокой степенью вероятности, действительно, там будет переиспользование одних блоков.

Но для безопасности явного освобождения объектов нужна полная гарантия, что его блок памяти никогда не будет переиспользован для других типов объектов.

Другой способ безопасного освобождения: это 128-битные указатели - и уникальность каждого выделенного указателя. Либо аппаратная 128-битность (как у старого Эльбруса), либо техническое поле у каждого указателя типа era/version, которое сверяется с меткой у адресуемого блока (но начала блоков не должны также "гулять", блок должен всегда оставаться блоком).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 253 ]  На страницу Пред.  1 ... 8, 9, 10, 11, 12, 13  След.

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


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

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


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

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