OberonCore
https://forum.oberoncore.ru/

Разрешить произвольный порядок объявлений в модуле?
https://forum.oberoncore.ru/viewtopic.php?f=29&t=5963
Страница 2 из 2

Автор:  prospero78 [ Пятница, 02 Декабрь, 2016 15:58 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Александр Ильин писал(а):
prospero78 писал(а):
... Поле динамических состояний множества констант равно нулю. В рамках предложенного мною методического предположения))
Во втором коде одна из констант содержит такую ошибку, которая невозможна в первом.


Для первого варианта -- поле динамических состояний множества констант равно нулю. В рамках предложенного мною методического предположения))
Приведённая ошибка -- это дисциплина программирования. С методикой, частично, пересекается, но всё же во втором варианте -- это примат "человеческого фактора", а не методики. Методика сужает поле ошибок человека, но не обнуляет. За человеком последнее слово. Методику и человека надо разделять ))

Автор:  Александр Ильин [ Пятница, 02 Декабрь, 2016 16:04 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Comdiv писал(а):
Вообще невозможна?
Это другая ошибка.

Автор:  ilovb [ Воскресенье, 04 Декабрь, 2016 17:16 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Илья Ермаков писал(а):
Вообще, одно из напрягающих мест КП - это когда определение целостной абстракции (тип данных, константы, операции - методы и просто процедуры) разорваны "географически".


Ты хочешь писать на Go. Просто еще не осознал :lol: :wink:

Автор:  Иван Денисов [ Воскресенье, 04 Декабрь, 2016 17:54 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Илья Ермаков писал(а):
Не-не, я про Оминк упомянул то, что они в ББ в Соглашениях об оформлении кода не рекомендовали даже CONST-TYPE-VAR перемешивать.
Ну, например, разумно объявлять константы перечислений рядом с типом или переменной, для которой они заводятся.
А у них оно всё одной секцией CONST.

Илья, никто не запрещает константы объявлять внутри процедуры...

Автор:  prospero78 [ Воскресенье, 04 Декабрь, 2016 18:48 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

ilovb писал(а):
Ты хочешь писать на Go. Просто еще не осознал

Заклинаю, изыди!!! :twisted:

Порядок объявления надо оставить как есть. Привязка методов к типам делать через размещение типа в том же модуле, что и процедуры для работы с типом. Надеюсь, указание типа первым параметром в процедуре это не извращение?)))

Автор:  Oleg N. Cher [ Воскресенье, 04 Декабрь, 2016 19:28 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Александр Ильин писал(а):
Код:
CONST MaxNum = 15;
TYPE Elements: ARRAY MaxNum OF INTEGER;
Да, Саша, благодарю.

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

Автор:  Илья Ермаков [ Воскресенье, 04 Декабрь, 2016 21:19 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Иван Денисов писал(а):
Илья, никто не запрещает константы объявлять внутри процедуры...


Так речь не про внутри процедуры...

А есть про константы, которые предназначены для использования с конкретным типом... И т.п.

Кстати, связанный момент.
В ББ напрягает то, что символьный файл не сохраняет порядок объявлений.
И тупо сортирует по алфавиту.
Это делает DEFINITION малоприменимым в куче случаев.
Т.е. он становится применимым только после ручного упорядочивания и группировки и вставки в таком виде в документацию.

Автор:  prospero78 [ Понедельник, 05 Декабрь, 2016 08:44 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Хм. Мне кажется вопрос об алфавитности меркнет, если вспомнить, что среда сама формирует файл определений, следит за согласованность и т. п.

По крайней мере я не замечал, чтобы меня это как-то отвлекало...

Автор:  Илья Ермаков [ Понедельник, 05 Декабрь, 2016 11:09 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Порядок определений в модуле всегда несёт некую семантику.

Соответственно, компилятор должен добавлять в символьный файл информацию о семантическом порядке, использованном программистом.

А дальше уже при показе DEFINITION можно переключаться между алфавитным порядком и исходным семантическим порядком.

Автор:  Александр Ильин [ Понедельник, 05 Декабрь, 2016 11:48 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Илья Ермаков писал(а):
А дальше уже при показе DEFINITION можно переключаться между алфавитным порядком и исходным семантическим порядком.
А там разве не сохраняется позиция объявления в исходном файле? Насколько я понимаю, для процедур точно сохраняется (см. переход к исходному тексту в trap viewer). Можно сортировать по этому полю.

Автор:  Илья Ермаков [ Понедельник, 05 Декабрь, 2016 16:46 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Так это не в символьном, а в кодовом, даже не в метаинформации, а в отладочной информации (Ref-функции Kernel).

Автор:  Александр Ильин [ Понедельник, 05 Декабрь, 2016 18:30 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Илья Ермаков писал(а):
Так это не в символьном, а в кодовом, даже не в метаинформации, а в отладочной информации (Ref-функции Kernel).
А, ну тогда понятно.
В символьный файл не сложно добавить при желании - хоть бы и отдельной таблицей.

Автор:  Trurl [ Среда, 13 Декабрь, 2017 12:45 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Илья Ермаков писал(а):
Порядок определений в модуле всегда несёт некую семантику.

Соответственно, компилятор должен добавлять в символьный файл информацию о семантическом порядке, использованном программистом.


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

Автор:  Илья Ермаков [ Пятница, 15 Декабрь, 2017 13:40 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Ну у нас фингерпринты в символьном файле есть для этого для каждой сущности. Они не меняются. А сам файл физически пусть меняется - ничего страшного.

Автор:  Trurl [ Воскресенье, 17 Декабрь, 2017 11:53 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Да, но время создания симфайла может быть единственным критерием необходимости перекомпиляции импортирующих модулей.
(Это я не про ББ, а про системы, в которых есть аналог make).

Автор:  Илья Ермаков [ Воскресенье, 17 Декабрь, 2017 14:45 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

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

Автор:  Trurl [ Воскресенье, 17 Декабрь, 2017 14:53 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

А потом скопилировал и символьный файл обновился. Теперь надо все зависимые модули перекомпилировать. На самом деле не надо, но как система об этом узнает?

Автор:  Илья Ермаков [ Воскресенье, 17 Декабрь, 2017 17:39 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Стоп, ну общий-то отпечаток модуля не меняется.
На дату ориентироваться, как бы, ненадёжно в принципе.

Автор:  Trurl [ Воскресенье, 17 Декабрь, 2017 21:24 ]
Заголовок сообщения:  Re: Разрешить произвольный порядок объявлений в модуле?

Сейчас отпечаток модуля не меняется благодаря тому, что все объекты отсортированы. Можно, конечно, сортировать отдельно, специально для расчета отпечатка.
Но главное, система сборки должна искать эти отпечатки и сравнивать. Пока таких, вроде, не существует.
Ну, то есть, в принципе все решаемо, но поработать придется.

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