OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 14 Июнь, 2025 17:53

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




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Понедельник, 23 Декабрь, 2024 19:28 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 593
Откуда: Москва
Тут главное - определить, что является нормой, а что выходит за рамки нормального. Если:
1. 99% кода не использует рекурсию, SYSTEM.GET для процедурных указателей и проч;
2. а 1% кода вынужден использовать TRACE с рекурсивным обеганием,
то вполне можно использовать ограничительную семантику с RESTRICT для 1 случая. А вот случай 2 будет ненормальным, без ограничений, стало быть, программист отдает себе отчет, что наворотил более сложные алгоритмы. И да, программист готов доказывать, что защита для TRACE им дважды проверена и работает. Случай 1 доказывать не надо, там и так все работает.

А вот если усложнение кода является нормой, то RESTRICT уже не поможет. Вместо усложнения компилятора для анализа неоднозначного кода лучше стимулировать разработчика писать ясный код.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 23 Декабрь, 2024 20:57 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1623
Надо, чтобы 0% кода могли использовать такую рекурсию, потому что движок просто на неё не рассчитан (я уже выяснил, что дело в попытке повторно получить уже полученную блокировку, которая такого использования не подразумевает). Но при этом трассировка без рекурсии нужна почти везде. На самом деле конкретно в данной ситуации уже разобрался на уровне динамики. Просто на самом-то деле, при попытке войти в блокировку падает ASSERT, но для вывода ему тоже нужна эта же блокировка. Я просто убрал оттуда ASSERT и вместо этого завершаю приложение (это режим приложения, а не ОС). Получается, что, совершив свою ошибку, я наступил на заранее подложенные грабли. Впрочем, это тоже означает, что неплохо бы запретить такую рекурсию на уровне компилятора.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 23 Декабрь, 2024 20:58 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1623
Но проблема в том, что запретить её прямо для целых модулей будет не особо хорошо, потому что она там нужна. Она нужна, но при условии отсутствии рекурсии. На самом деле _была_ нужна, раз мне удалось научить систему падать более внятно, то теперь этой проблемы больше нет, от неё осталось только ментальное упражнение не совсем понятной ценности, так что можно и свернуть обсуждение.


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

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


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

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


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

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