A2 & Oberon » Документы » Документы » Вызов чужих модулей

Страниц (1): [1]
 

1. MaDzi - 04 Января, 2009 - 18:39:14 - перейти к сообщению
Перевожу документ:

"10.2.3. Пространство имён

Во время разработки Bluebottle, большое количество конфликтов происходило между существующими модулями Oberon системы и вновь создаваемыми модулями. Так как название модулей должны быть уникальными, новые модули Bluebottle должны отличаться по названию от всех модулей Oberon системы.

Вообще хорошая схема именования модулей в Oberon системе привела к большому количеству столкновений в названиях модулей новой системы. Решением стало введение префикса Aos к названию модулей Bluebottle. Так например текстовая подсистема Oberon содержится в модуле Texts. Соответствующий модуль Bluebottle называется AosTexts. Описанная ситуация могла бы разрешиться путём введения различных пространств имён для разных проектов. Модули Oberon системы могли бы содержаться в пространстве имён Oberon, в то время как модули с точно таким же названием могли бы использоваться в Bluebottle."

В настоящей момент данная проблема решена введением в A2 пространства имён. И в Oberon-системе и в Bluebottle теперь есть модули с названиями Texts.Mod. Пространство имён задаётся путём добавления к названию модуля специального идентификатора IN с указанием имени пространства, где располагается модуль.

MODULE Text IN Oberon;

В названии файла это отражается добавлением имени пространства перед именем модуля, то есть файл называется
Oberon.Texts.Mod;

Теперь вопрос: Возможно ли из системы Bluebottle вызывать модули Oberon-системы и как и наоборот. Ведь если мы пишем:


MODULE lalala IN Oberon;

IMPORT
Texts;

импортируется модуль Oberon.Texts.Mod, а как импортировать Texts.Mod ???
2. BohdanT - 04 Января, 2009 - 18:49:14 - перейти к сообщению
Я вот вчера хотел сделать свое пространство имен и потерпел неудачу...
Все детально описано здесь
http://www.ocp.inf.ethz.ch/wiki/...ame=contexts.pdf
Although this concept is more generic than actually needed, regular application program-
mers shall actually not be encouraged to define and use their own contexts in the medium
term.
3. MaDzi - 04 Января, 2009 - 22:39:00 - перейти к сообщению
BohdanT пишет:
Я вот вчера хотел сделать свое пространство имен и потерпел неудачу...
...skip...

А что детально не получилось ?

Я тоже попробывал:

MODULE Test IN Bctx;

IMPORT KernelLog;

PROCEDURE Open*;
BEGIN
KernelLog.String('TEST B');
KernelLog.Ln;
END Open;

END Test.


И мне пишет компилятор: Bctx invalid context
Что тут не так?
4. BohdanT - 04 Января, 2009 - 23:41:38 - перейти к сообщению
MaDzi пишет:
Что тут не так?

Я ж доку кинул, там сказано: пока не реализовано...
Прошито два контекста A2 и Oberon, свои создавать пока нельзя...
5. lit-uriy - 05 Января, 2009 - 02:19:46 - перейти к сообщению
блин бредятина вообще и связана она с кастрированой ФС в которой нет каталогов.
В реальной системе существует великое множество программ написаных разными людьми. И не факт, что все пространства имен будут у никальными. Была бы возможность указывать путь к модулю, например так:

MODULE Test ;

IMPORT
<SYS>/KernelLog, ./MyCoolModule, %ForeignLib%/CoolLib/CoolModule;

где
<Dir> - системный (AOSовский каталог, что-то вроде стандартной библиотеки)
./ - текущий каталог данного модуля
%VAR% - произвольная переменная окружения

при таком раскладе проблем бы не было.
А ноги проблемы растут из того места, что AOS не имеет хотябы незначительного распростронения и о нем вообще ничего не думалось. И все кто под нее пишут имеют AOS+свое+пара-тройка чужих модулей.
6. MaDzi - 05 Января, 2009 - 02:27:58 - перейти к сообщению
lit-uriy пишет:
блин бредятина вообще и связана она с кастрированой ФС в которой нет каталогов.
...skip...
А ноги проблемы растут из того места, что AOS не имеет хотябы незначительного распростронения и о нем вообще ничего не думалось. И все кто под нее пишут имеют AOS+свое+пара-тройка чужих модулей.

Как мне кажется, ноги проблемы растут из того, что A2 проектируется как ВСТРАИВАЕМАЯ система, на подобии Palm OS, где тоже нет каталогов.
7. BohdanT - 05 Января, 2009 - 11:02:24 - перейти к сообщению
Да, неудобно.... нужно на ocp.inf.ethz.ch повозмущаться, может наконец доделают.
8. Wlad - 05 Января, 2009 - 22:14:05 - перейти к сообщению
lit-uriy пишет:
блин бредятина вообще и связана она с кастрированой ФС в которой нет каталогов.

Немного не так.
Вы вероятно путаете, наличие в ОСи файловой иерархической системы и службы, позволяющей закреплять за некими объектами ОСи имена из "пространств вложенных имён"...
Например, в Plan 9 или Inferno тоже может не быть поблежащего драйвера ФС с иерархией каталогов, но там есть служба организации иерархически вложенных пространств имён...

ОК?

ЗЫ Таки что мешает студентам выдать курсовик на тему написания такой подсистемы? Улыбка С закреплением служб и драйверов в точках такого пространства имён... Вот уже и сетевое взаимодействие даже интересней пойдёт... И драйверы к устройствам находится легче будут (да и сами устройства...) Улыбка

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0099]     [ Gzipped ]