[07:31:07] <ada_ru> (Eugene) отвечает (sergey_dukov) на <В АДЕ анализ инициал…>
я не о том, правильно или неправильно определяется порядок вызова инициализаторов, а о том, что он может быть непредсказуем для программиста.
допустим, в инициализаторах производятся какие-то побочные эффекты типа записи чего-то в лог файл, например, при негарантированном порядке инициализации эти записи будут идти в неопределённом заранее порядке.
с другой стороны, если выделять инициализацию модуля в отдельную процедуру, вызов которой может быть пропущен (компилятор его не требует), то там могут быть другие проблемы...
[07:53:13] <ada_ru> (sergey_dukov) отвечает (Eugene) на <я не о том, правильн…>
Порядок вызовов в основном непредсказуем для программиста. Но этот факт заранее известен программисту и должен им учитываться. Логи же раскажут о фактическом порядке вызывов инициаторов. Но этот порядок может изменится при, казалось бы небольшой, модификации программы. Это тоже нужно учитывать. Необходимую одноразовую инициализацию программы с гарантированным порядком вызовов её частей нужно проиводить в начале головной процедуры программы. Так всегда делается в программировании.
[08:43:59] <ada_ru> (sergey_dukov) Узнать фактический порядок вызовов инициаторов в GNAT можно определить и без логов и не запуская программу вообще. Просто нужно просмотреть файл ...b_... порождаемый утилитой GNATBIND (часть GNATMAKE). В этом модуле и осуществляется вызов инициаторов всех других модулей АДА-программы. И если вы что-то измените в этих модулях, изменится и модуль связки. В модульных языках языках вопрос именно в том правильно ли проиведен анализ вызовов иниациаторов и, в случае обнаружени проблем, как он с ними поступит. В АДЕ это сделано правильно и просто — типа: "уходи от машин и подумай у доски".
[08:58:48] <ada_ru> (Eugene) по идее надо указывать в настройках проекта порядок загрузки модулей
[09:02:14] <ada_ru> (sergey_dukov) отвечает (Eugene) на <по идее надо указыва…>
Увы, не всё в мире просходит так как нам хочется!
[09:07:57] <ada_ru> (sergey_dukov) И дело не в порядке загрузки а в порядке вызовов их инициаторов, Именно этот порядок компилятор и расчитывает при формировании модуля связки.
[09:11:05] <ada_ru> (Eugene) ну под загрузкой модуля я и имел в виду выполнение инициализации модуля, что там ещё загружать-то
[09:18:25] <ada_ru> (sergey_dukov) Правильно. Но порядок вызово определяется анализом взамных обращений в модулях. И его изменить по желанию программиста наверное невозможно.
[09:45:43] <ada_ru> (Максим) отвечает (vasil_sd) на <Он Аду не поддержива…>
https://www.ada-ru.org/editor.html?id=4105765965 Вот я игрался когда-то с ним
[16:15:28] <ada_ru> (Максим) https://www.youtube.com/watch?v=LAIwaM7i7HI
[16:18:23] <ada_ru> (I_vlxy_I) O_o
[16:20:02] <ada_ru> (Oleg) Я ничего не понимаю Ж-) на что оно реагирует?
[16:20:41] <ada_ru> (Oleg) а там же субтитры 😊
[16:20:46] <ada_ru> (Oleg) Посмотрю попозже
[18:14:48] <ada_ru> (Максим) Там камера смотрит на нее сверху и управляет по радио, кажется