OberonCore
https://forum.oberoncore.ru/

#045 Предложение: убрать из Files лишние методы
https://forum.oberoncore.ru/viewtopic.php?f=134&t=6713
Страница 2 из 3

Автор:  Борис Рюмшин [ Вторник, 12 Январь, 2021 12:45 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Иван Денисов писал(а):
Есть на форуме голосовалка?
Только вот текст для голосования надо обсудить коллективно.

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

Автор:  Борис Рюмшин [ Вторник, 12 Январь, 2021 13:02 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Ну например.

В версии 1.7, для решения проблемы указанной Ильёй Ермаковым (viewtopic.php?t=1948), вместо предложенного им же решения, BlackBox Framework Center ввёл в базовый класс каркаса File два новых метода (Shared () и Closed ()), которые возвращают текущее состояние файла. Тем самым нарушив обратную совместимость и компонентный подход, декларируемый создателями BlackBox. Для разрабатываемой российским сообществом версии BlackBox 1.8 предлагается либо принять такое решение Центра, либо вернуться к решению Ильи Ермакова (также называемого решением OberonCore).

Вы

1) Считаете правильным решение OberonCore (авт. Илья Ермаков), согласовывающее реализацию (HostFiles) со спецификацией (Files).

2) Считаете правильным решение BlackBox Framework Center (Проблема № 22), согласовывающее спецификацию (Files) с реализацией (HostFiles).

Автор:  Илья Ермаков [ Вторник, 12 Январь, 2021 15:32 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Поддерживаю текст опроса.

Поддерживаю "убрание" (или "убирательство"?) методов, добавленных Центром.

Как минимум, их надо реализовывать через процедуры модуля Files и отдельный хук реализаций.

Автор:  Иван Денисов [ Вторник, 12 Январь, 2021 18:33 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Написано от души, но текст слишком предвзят. Зато он отлично иллюстрирует ваше отношение к вопросу! Как часть дебатов подойдет.

Предлагаю следующий сухой безличностный текст.

Было обнаружено, что реализация и спецификация HostFiles.NewWriter в версии Блэкбокса 1.6 не соответствуют друг другу. Согласно спецификации в случае файлов только для чтения NewWriter должен возвращать NIL. Однако в реализации имеется две инструкции ASSERT(f.state # closed, 20); ASSERT(f.state # shared, 21). При этом, возможности вычислить состояние файла в интерфейсе не предусмотрено, а значит — не существует возможности обойти данные проверки.

Предлагается выбрать решение:

1) Убрать ASSERTы, и реализовать возврат NIL. Достоинство данного решения в том, что сохраняется интерфейс Files версии 1.6. Недостаток в более позднем обнаружении ошибки.

2) Добавить две процедуры Closed() и Shared() для возможности вычисления состояния файла, исправить документацию. Достоинство данного решения в том, что благодаря ASSERTам ошибка будет обнаружена раньше и квалифицирована более точно. Недостаток в нарушении интерфейса Files относительно версии 1.6.

3) Исправить документацию, а реализацию не менять (оставить ASSERTы и NIL не возвращать). Достоинства в том, что сохраняется интерфейс Files версии 1.6, ошибка будет обнаружена раньше и квалифицирована более точно. Недостаток в том, что некоторые экзотические случаи потребуют частной реализации Files и HostFiles.

Автор:  Иван Денисов [ Вторник, 12 Январь, 2021 18:58 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

После внимательных размышлений я за третий вариант. Вообще вернуть, как сделали Оберон микросистемы.

Автор:  Илья Ермаков [ Вторник, 12 Январь, 2021 19:10 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Давайте содержательно проанализируем практическую значимость случая "а если мы вернули NIL - и обнаружили это значительно позже".

С точки зрения вообще частоты случаев, когда writer отложен и передан далеко от места создания - и с точки зрения того, насколько усложняется диагностика, если таки вдруг он ушёл далеко от места создания и там дал NIL dereference.

Автор:  Борис Рюмшин [ Вторник, 12 Январь, 2021 19:12 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Иван Денисов писал(а):
Написано от души, но текст слишком предвзят. Зато он отлично иллюстрирует ваше отношение к вопросу! Как часть дебатов подойдет.

Спасибо, конечно. Но речь же была не о выборе решения даже, а об отмене решения. Если ставится вопрос именно как выбор, то все, я думаю, согласятся с п. 3. И можно даже голосование не проводить.

Автор:  Иван Денисов [ Вторник, 12 Январь, 2021 19:15 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Илья Ермаков писал(а):
Давайте содержательно проанализируем практическую значимость случая "а если мы вернули NIL - и обнаружили это значительно позже".

С точки зрения вообще частоты случаев, когда writer отложен и передан далеко от места создания - и с точки зрения того, насколько усложняется диагностика, если таки вдруг он ушёл далеко от места создания и там дал NIL dereference.

Я думаю, что Оберон микросистемс воткнули туда ASSERTы как раз после какого-то такого случая, который оказался достаточно критическим. Документацию подправить забыли.

Автор:  Борис Рюмшин [ Вторник, 12 Январь, 2021 19:16 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Илья Ермаков писал(а):
Давайте содержательно проанализируем практическую значимость случая "а если мы вернули NIL - и обнаружили это значительно позже".

С точки зрения вообще частоты случаев, когда writer отложен и передан далеко от места создания - и с точки зрения того, насколько усложняется диагностика, если таки вдруг он ушёл далеко от места создания и там дал NIL dereference.

Да, по большому счёту, не важно. Отследить можно. А ситуации работы с закрытыми или RO-файлами, экзотические в том смысле, что они скорее всего созданы ошибочной логикой. Просто в ББ так с файлами не работают.

Автор:  Борис Рюмшин [ Вторник, 12 Январь, 2021 19:18 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Иван Денисов писал(а):
Я думаю, что Оберон микросистемс воткнули туда ASSERTы как раз после какого-то такого случая, который оказался достаточно критическим.

Правильно. Чтобы ошибка в логике была видна. И всплывёт она ещё во время разработки, до эксплуатции с 99,9%-й вероятностью.

Автор:  Иван Денисов [ Вторник, 12 Январь, 2021 19:53 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Тогда, если Алексанр Ширяев, Антон Дмитриев не будут возражать, то давайте вернем, как было в 1.6 и закроем тему...

Автор:  Илья Ермаков [ Вторник, 12 Январь, 2021 20:23 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Борис Рюмшин писал(а):
Да, по большому счёту, не важно. Отследить можно. А ситуации работы с закрытыми или RO-файлами, экзотические в том смысле, что они скорее всего созданы ошибочной логикой. Просто в ББ так с файлами не работают.


Нуу, у меня как раз всплыло после какой-то ситуации с RO.

Автор:  Борис Рюмшин [ Вторник, 12 Январь, 2021 20:40 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Илья Ермаков писал(а):
Нуу, у меня как раз всплыло после какой-то ситуации с RO.

Ты у нас отдельный случай сам по себе.

Автор:  adimetrius [ Среда, 13 Январь, 2021 15:03 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Коллеги, я кратко могу высказаться по этой теме так: с технической стороны мне почти все равно. С точки зрения "сохранения инвестиций" - у меня их нет, нечего сохранять.

С точки зрения совместимости с Центральной версией - это вопрос стратегии и позиционирования; но какие критически важные приложения окажутся несовместимы и труднодоступны для ББКП 1.8, если уйти от Центральных интерфейсов? Даже не знаю... (Я работаю на Линуксе, и почти все расширения с СРС, которые я хотел попробовать, чуть-чуть используют WinApi. Ну так, слегка. Буквально в одном-двух местах. Из-за чего их невозможно попробовать на Линуксе. Даже Pac (Пак) Жерара Мюнье - и тот одну винапишную функцию использует в одном месте; и уже год обещает поправить. Это я к тому, что совместимость, увы, все равно потеряна: для кросс-платформенных приложений нужно при разработке иметь в виду кросплатформенность).

Автор:  adimetrius [ Среда, 13 Январь, 2021 15:16 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

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

Почему в интерфейсе Files строки передаются как значения? А не как переменные только для чтения?

К примеру,
TYPE Name = ARRAY 256 OF CHAR;
PROCEDURE Files.Directory.Old (loc: Locator; name: Name; shared: BOOLEAN): File, NEW, ABSTRACT;

А ведь, кмк, можно:
PROCEDURE Files.Directory.Old (loc: Locator; IN name: Name; shared: BOOLEAN): File, NEW, ABSTRACT;

Я не смог придумать обоснований этому. Быть может, коллеги подскажут? Собсно, и жгучей необходимости так сделать тоже нет; всего лишь лишнее копирование строки.
Но почему бы нет?

Автор:  Борис Рюмшин [ Среда, 13 Январь, 2021 17:34 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

adimetrius писал(а):
Я не смог придумать обоснований этому. Быть может, коллеги подскажут? Собсно, и жгучей необходимости так сделать тоже нет; всего лишь лишнее копирование строки.
Но почему бы нет?

Так получилось. :)

А так я могу сделать вывод, что Антон Дмитриев не возражает по изменению #045.

Автор:  Илья Ермаков [ Среда, 13 Январь, 2021 21:46 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Видимо, интерфейс со времён Оберона-2. Когда был только VAR, а IN ещё не было.

Автор:  Иван Денисов [ Четверг, 14 Январь, 2021 17:24 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Антон и Александр сказали не возражают. Есть проблема с Stores64, что он там уж как-то много использует Closed().
Товарищи, поглядите на предмет того, какую версию Stores64 надо загрузить с коммитом? Я подозреваю, что не все тонкости там улавливаю.

Автор:  Info21 [ Четверг, 14 Январь, 2021 23:49 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Иван Денисов писал(а):
Есть проблема с Stores64, что он там уж как-то много использует Closed().
Stores64 должен работать в любом случае.

Автор:  Борис Рюмшин [ Пятница, 15 Январь, 2021 22:44 ]
Заголовок сообщения:  Re: #045 Предложение: убрать из Files лишние методы

Иван Денисов писал(а):
Антон и Александр сказали не возражают. Есть проблема с Stores64, что он там уж как-то много использует Closed().
Товарищи, поглядите на предмет того, какую версию Stores64 надо загрузить с коммитом? Я подозреваю, что не все тонкости там улавливаю.

Посмотрим.

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