Опять про ЯП и секции исполняемых модулей

Философ Философ
Во многих современных ОС, например в Windows, существует замечательная фича в виде секций с их атрибутами доступа. Однако её использование затруднено тем, что ЯП эту фичу не поддерживают.

Например, далеко не так просто расшарить одну переменную между несколькими процессами.

Более того, современные языки до сих пор игнорируют существование самих модулей.
Пример, как бы это могло быть использовано:

{
Module module = Module.Load (userString);

((MyModule)module).ProcessData(data); //Ясен пень, что о содержимом модуля мы должны знать во время компиляции

Module.Unload(module); //вот так, потому что внутри модуля ReferenceCounter
}

Если добавить возможность экспорта классов, то это бы значительно упростило жизнь разработчикам приложений поддерживающих плагины. Вместе с приложением можно было бы публиковать заголовочный файл для модуля, а разработчику плагина достаточно было бы реализовать то, что он декларирует.
os24ever
os24ever
14.09.2012 06:56
При умелом использовании — да, удобно...
При неумелом — глобальные переменные на уровне операционной системы и "кошмар зависимостей", он же DLL Hell.
Философ
Философ
14.09.2012 07:09
Здравствуйте, os24ever, Вы писали:

O>При умелом использовании — да, удобно...


Любой инструмент можно использовать неумело.

O>При неумелом — глобальные переменные на уровне операционной системы

именно это (в частности) я и хочу упростить

O>и "кошмар зависимостей", он же DLL Hell.

каким образом?
os24ever
os24ever
14.09.2012 07:26
Ф>каким образом?

Новый Тетрис потребовал обновить MP3-библиотеку, из-за чего развалился Нортонкоммандер, при его переустановке обновилась библиотека Unzip32.dll, из-за чего перестала работать ZipFS, при её переустановке был обновлён драйвер ACPI.sys, не было гвоздя — подкова пропала, не было подковы — лошадь захромала и т.п.
Философ
Философ
14.09.2012 07:49
Не понятно.
Причём здесь секции и глобальные переменные?
Секции и сейчас очень активно используются, но в большинстве случаев неявно.

Кто виноват в том, что новая версия библиотеки "свалила" весь софт, который её использует, для меня очевидно.
Сейчас такое тоже бывает.
LaptevVV
LaptevVV
22.09.2012 03:34
Здравствуйте, Философ, Вы писали:

Ф>Более того, современные языки до сих пор игнорируют существование самих модулей.

Это вся сишная ветка игнорирует. А в паскалевской Вирт еще в Модуле сделал модули. И теперь они есть там и в Обероне, и в Компонентном паскале.
И, кстати, в БлэкБоксе модули подгружаются динамически. Тем самым и два вида (exe и dll) исполняемых файлов не нужны — есть только один: модули.
AndrewVK
AndrewVK
22.09.2012 09:09
Здравствуйте, LaptevVV, Вы писали:

Ф>>Более того, современные языки до сих пор игнорируют существование самих модулей.

LVV>Это вся сишная ветка игнорирует.

А чем дотнетная сборка или JVMный класс не тянут на гордое звание модуля?
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 8 6.2.9200.0>>
LaptevVV
LaptevVV
23.09.2012 07:01
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, LaptevVV, Вы писали:


Ф>>>Более того, современные языки до сих пор игнорируют существование самих модулей.

LVV>>Это вся сишная ветка игнорирует.

AVK>А чем дотнетная сборка или JVMный класс не тянут на гордое звание модуля?

Класс вообще не может быть модулем. Ибо в одном модуле может быть несколько классов.
Пакет или сборка — это понятие более крупное, чем модуль.

Наличие ЯВНОЙ конструкции модуля побуждает (замечено неоднократно в процессе обучения) студента мыслить о декомпозиции более конкретно.
Ни классы, ни сборки не побуждают к декомпозиции. Да, можно постоянно твердить об этом, но реально студни начинают думать только при наличии ЯВНОЙ конструкции в языке.
AndrewVK
AndrewVK
23.09.2012 08:00
Здравствуйте, LaptevVV, Вы писали:

AVK>>А чем дотнетная сборка или JVMный класс не тянут на гордое звание модуля?

LVV>Класс вообще не может быть модулем.

Почему?

LVV> Ибо в одном модуле может быть несколько классов.


Кто сказал?

LVV>Пакет или сборка — это понятие более крупное, чем модуль.


Почему?

LVV>Наличие ЯВНОЙ конструкции модуля побуждает (замечено неоднократно в процессе обучения) студента мыслить о декомпозиции более конкретно.


Что такое "явная конструкция модуля"? Ключевое слово module/unit?

LVV>Ни классы, ни сборки не побуждают к декомпозиции.


Модули тоже не побуждают.
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 8 6.2.9200.0>>
hardcase
hardcase
23.09.2012 09:51
Здравствуйте, LaptevVV, Вы писали:

LVV>Это вся сишная ветка игнорирует. А в паскалевской Вирт еще в Модуле сделал модули. И теперь они есть там и в Обероне, и в Компонентном паскале.


В .NET есть понятие модуля, но я не могу себе представить ситуации, когда эта функциональность потребовалась бы прикладному программисту.
AndrewVK
AndrewVK
23.09.2012 10:01
Здравствуйте, hardcase, Вы писали:

H>В .NET есть понятие модуля


Аналог паскалевского модуля это сборка, а не нетовский модуль.
... << RSDN@Home 1.2.0 alpha 5 rev. 65 on Windows 8 6.2.9200.0>>