История изменений
Исправление X512, (текущая версия) :
Но лишняя линковка — это лишнее время загрузки, потому по возможности ее делают на этапе компиляции.
Зависит от задачи. Если модулей не много или процесс работает длительное время, то с отдельной динамической линковкой каждого модуля нет проблем. Зато например можно динамически поменять модуль на серверном приложении в продакшене без перезапуска приложения.
А это ничего, что одни модули могут использовать структуры данных из других модулей?
Ничего, в других системах с модулями (C/C++, Java/C#, Python, Go, Rust и т.д.) так тоже можно. Модули в одном адресном пространстве могут использовать экспортированные символы других модулей. Компилятор Оберона проверяет так чтобы модуль не использовал приватные символы других модулей.
Исходная версия X512, :
Но лишняя линковка — это лишнее время загрузки, потому по возможности ее делают на этапе компиляции.
Зависит от задачи. Если модулей не много или процесс работает длительное время, то с отдельной динамической линковкой каждого модуля нет проблем. Зато например можно динамически поменять модуль на серверном приложении в продакшене без перезапуска приложения.
А это ничего, что одни модули могут использовать структуры данных из других модулей?
Ничего. Модули в одном адресном пространстве могут использовать экспортированные символы других модулей. Компилятор Оберона проверяет так чтобы модуль не использовал приватные символы других модулей.