На данный момент лучшая реализацию модельности из виденных мной в Go. Для этого в языке используется неожиданное решение в виде запрета циклических импортов модулей. В итоге модули активно используют интерфейсы что делает их в большой степени изолированными, с торчащими наружу интерфейсами, а не реализацией. В купе с простотой развёртывания зависимостей, это по моему мнению самый модульный язык на сегодня из промышленно используемых.
Re: Какие из популярных ЯП по настоящему модульные?
Здравствуйте, vaa, Вы писали:
vaa>в java вроде пакеты, модулей нет.
Есть. Начиная с Java 9.
vaa>а в рантайме можно перегрузить jar или class?
Не прям из коробки, но в целом с небольшими усилиями можно, если изменения небольшие, например в теле метода поменялось что-то. Если изменения большие, то либо с помощью jrebel (очень платный продукт), либо с помощью dcevm (специальная JVM).
Ну можно тупо загрузить новые версии классов в другом класс-лоадере. Но существующие объекты на них не перейдут, т.е. это что-то вроде перезапуска приложения или его части и там тоже хватает нюансов.
Re: Какие из популярных ЯП по настоящему модульные?
Здравствуйте, Буравчик, Вы писали:
Б>Здравствуйте, vaa, Вы писали:
vaa>>https://oberoncore.ru/library/gubanov_sekrety_modulnyh_sistem
Б>Что подразумевается под модульностью? Б>В статье этого ответа не обнаружил — огромные абзацы скрывают эту главную мысль.
Модуль по мнению обероновцев должен уметь загружаться/выгружаться в рантайме безопасно и иметь версионирование на уровне членов при помощи хэшей.
т.е. я могу тупо удалить даже часть апи, но если клиент его не юзал, то по фигу. будет работать.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: Какие из популярных ЯП по настоящему модульные?
Здравствуйте, vaa, Вы писали:
vaa>в java вроде пакеты, модулей нет.
Пакеты — это пространства имён. Java с девятой версии модульная.
vaa>а в рантайме можно перегрузить jar или class?
JAR не модуль, а архив. Код class'а можно как выгрузить из JVM, так и сгенерировать и загрузить снова, в рантайме, естественно.
Файл .class — это готовый модуль в понимании модульного программирования.
Re[3]: Какие из популярных ЯП по настоящему модульные?
Здравствуйте, vaa, Вы писали:
vaa> Модуль по мнению обероновцев должен уметь загружаться/выгружаться в рантайме безопасно и иметь версионирование на уровне членов при помощи хэшей. vaa> т.е. я могу тупо удалить даже часть апи, но если клиент его не юзал, то по фигу. будет работать.
Под такое описание попадает система пакетов в Delphi.
Здравствуйте, kaa.python, Вы писали:
KP>На данный момент лучшая реализацию модельности из виденных мной в Go. Для этого в языке используется неожиданное решение в виде запрета циклических импортов модулей. В итоге модули активно используют интерфейсы что делает их в большой степени изолированными, с торчащими наружу интерфейсами, а не реализацией. В купе с простотой развёртывания зависимостей, это по моему мнению самый модульный язык на сегодня из промышленно используемых.
Это описание всех языков поддерживающих именно модули или пакеты. Что тут неожиданного? Это же в Дельфи было.
Модуль как единица трасляции, инкапсуляции и системы метаданных. Вот Оберон, которого топикостартер пропагандирует, как раз их и поддерживает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.