Lifewalker писал(а):
Да, процессами в смысле висит в памяти процесс "Хранилище" и процесс "Движок" и между ними нужно гонять данные и сообщения (не RPC, а именно сообщения) туда-сюда. Если бы писал на Си или Джаве то был бы 100% уверен, что так или иначе результат достижим, но как это будет работать в случае реализации на Обероне - не представляю. В том числе потому не представляю, что до конца не решил каким именно механизмом всё это реализовать
То ли по сети через localhost (с расчётом на потенциал распределённости) гонять мегабайты атрибутов "сущностей", то ли через разделяемую память - всё это ещё в голове, и до конкретной реализации не добралось.
Всё это можно сделать и на Обероне, в т.ч. и привязаться в случае с Си к библиотеке на Си (как на уровне связки исходников, так и к оттранслированной .SO/DLL), а в случае использования Java-класса — к этому классу. Только чем больше вы будете полагаться на механизмы ОС — тем большей и будет привязка к этой ОС. И тем меньший потенциал по переносу на другие платформы. Я не вижу проблем, на Обероне можно написать модули, которые будут гонять мегабайты атрибутов через разделяемую память или через TCP/IP-протокол. Можно вообще сделать абстрактный интерфейс и к нему — различные реализации модуля связи. Компонентный Паскаль (диалект Оберона-2) предлагает для этого специальные удобные средства.
Oberon-way — это межмодульное взаимодействие, т.е. обмен сообщениями (в терминологии ООП), фактически вызовами процедур/методов между модулями. Это хорошо подходит в случае локальной работы. Если потребуется и удалённая, то, видимо, не обойтись без сети и TCP/IP. Возможно, не стоит сразу решать, что "процесс" будет многозадачным процессом (thread в Windows или fork в Linux), возможно, Оберон-путь, желющий избежать сложностей и проблем
"истинной многозадачности", поможет переформулировать эту задачу в сторону кооперативной многозадачности.
Так что если хотите при решении задачи по максимуму опереться на языковые механизмы (или готовые кроссплатформенные библиотеки) и по минимуму — на внутреннее устроение ОС, то Оберон будет хорошим выбором. Особенно если есть опыт разработки на низком уровне (типа WinAPI).
Lifewalker писал(а):
Именно идеология Оберона мне и понравилась. Что до отторжения у линуксоидов, то уверяю вас, как линуксоид: Линукс у меня самого вызывает отторжение, правда много меньшее, чем Винда
Но это уже жестокий офтопик.
Что ж, это не совсем оффтопик, потому что недостатки есть у любой вещи, и нужно думать как их исправить хотя бы частично! Здесь вольно обсуждать такие вопросы, я сам имею грешок поругать сишный синтаксис и т.п.
А вопросы взаимодействия Оберон-технологий с Линуксом и Виндой — самый топик.
Lifewalker писал(а):
Про файлы не знал, спасибо. Теоретически, это может стать проблемой.
Ну, я имел ввиду именно Оберон-системы (ETH Oberon, A2/AOS), где конечно ни о каких атрибутах а-ля Линукс речь не идёт. Но если программа на Обероне скомпилирована и работает непосредственно под Линуксом — всегда есть возможность использовать встроенные механизмы ОС, в т.ч. и все возможности файловой системы.
Lifewalker писал(а):
К тому времени, когда проект доберётся до реального состояния всё может перемениться. Кто мог 5 лет тому назад сказать, что планешеты на Андроиде заполонят мир, и кто мог сказать 3 года тому назад, что самсунговская Бада будет спущена в унитаз?
Да, это как раз угнетает, непредсказуемость. Я думал о разработке на Обероне для Андроида, и, полагаю, это тоже возможно, раз уж это возможно для более ограниченной по возможностям платформы Java ME.
Раз нам в будущем предстоит прицепиться к неизвестной на данный момент платформе, то это игры по неизвестным на сей день правилам. Оберон может выручить, он уже сейчас является мостиком между .NET, Java и нативом. А раз так, то GPCP и BlackBox могут оказаться полезными.
Lifewalker писал(а):
Панелька слева|справа со списком атрибутов и|или критериев отбора с возможностью группировать их, справа|слева окно со списком сущностей в виде таблицы|списка|эскизов, с масштабированием и парой трюков по обработке, вот и всё. В общем, что-то среднее между Finder, iTunes и Nautilus, только логичнее и без файлов
Теоретически, его можно даже на HTML сваять. Однако, хочу вернуть к жизни некоторые фишки из OS/2, которые сегодня могут быть восприняты как "новое откровение", потому нужно будет посмотреть. В любом случае, там будет минимум элементов управления с заделом на пальцетыкальное управление навроде современного GNOM'а.
Ну это и есть полагаться на механизмы ОС, и это приходится делать любому гую. Так что нужно как следует составить требования. Дисциплинирует простое детальное описание с обоснованием решений, почему это надо сделать именно так, а не иначе.
Именно гуй может стать основным камнем преткновения при разработке вашего проекта на Обероне. Но вдумаемся, насколько противоречиво уже само требование с одной стороны иметь хорошую интеграцию с ОС и привычный в ней внешний вид, а с другой — максимальную портабельность и независимость от особенностей этой самой ОС. Здесь Оберон может стать хорошим балансиром между первым и вторым, но конечно нужна некоторая авантюрность склада ума, чтобы на это решиться.
Если бы мне пришлось столкнуться с необходимостью делать гуй на Обероне, я бы посмотрел в сторону того, что реализовано в BlackBox, или же решил бы писать прямо на WinAPI, ну или на GTK (что тоже можно сделать с помощью средств BlackBox, меня вообще радует
продвижение BlackBox в сторону работы под Linux, но стабильной реализации всё ещё нет), или какое-то .NET или Java-решение для построения гуя (и работать с помощью компилятора GPCP). Оберон-системы здесь, похоже, не подойдут. Или надо делать что-то самопальное типа
Oberon Visual Component Library (или биндинг к SDL_gui). Мы немного уже обсуждали вопрос построения гуя на Обероне в теме
VisualOberon.