Дмитрий Дагаев писал(а):
Будет ли переносим программный код, если он написан на Обероне-2 ?
Нет
Ну почему же нет? С чего вы вдруг решили, что Оберон-1 более переносимый, чем Оберон-2?
Дмитрий Дагаев писал(а):
Возникла работа с методами - и для КП уже нужно ABSTRACT или EXTENSIBLE, а для AO - OBJECT.
Поэтому представляется разумным иметь Oberon-2 front-end и множество back-end'ов, например, C, КП, AO.
В принципе, Оберон-2 в Си мы транслируем не от хорошей жизни. Просто хочется использовать по максимуму распространённые ОС и готовые компоненты, библиотеки, компиляторы. Когда ещё будут компиляторы Оберона под все платформы (без Си), да и будут ли?
Сам же Оберон-2 я не считаю идеальным эталонным диалектом-базисом, чтобы автоматически транслировать его в другие Оберон-диалекты, часто грешащие теми же недостатками, что и Оберон-2. Тем более, что адаптация исходника на Обероне-2 к КП делается ручками за несколько минут, и такая работа вполне оправдана, здесь на поток ставить просто нечего.
Вместо этого я предпочёл бы видеть в качестве базового языкового минимума даже несколько обфиченный КП, который имеет ряд важных преимуществ, отсутствующих в стандарте Оберона-2, и я постоянно спотыкаюсь об их отсутствие в Ofront'е. Например, нету возможности инициализировать в коде (без чтения из внешнего ресурса) юникод-строки иначе как:
Код: "OBERON"
VAR unicode: ARRAY 100 OF SHORTINT;
BEGIN
unicode[0] := 105H; unicode[1] := 110H; ... unicode[99] := 115H;
Это к вопросу о том, можно ли работать на Обероне-2 с юникодом. Можно. Но не слишком удобно: мало того, что значение строк задаётся только одиночными присваиваниями кодов символов, ну а если понадобится вставить символ в середину строки? Придётся вручную перенумеровывать индексы.
Так что не вижу никакого смысла транслировать Оберон-2 в КП (это всё равно что делать из масла масло масляное), ровно также как и транслировать друг в друга совершенно разные диалекты Оберона, у которых к тому же различное назначение. Например, для AO характерна легковесная многопоточность на уровне языка, а в Обероне-2/КП такая многопоточность может быть достигнута только библиотечными средствами.
Дмитрий Дагаев писал(а):
А Вы не рассматривали обратную задачу: КП и/или Активный Оберон в качестве бэк-энда?
Признаюсь откровенно: для меня такие задачи имеют чисто умозрительную привлекательность, как подсчёт звёзд на небе. Т.е. неплохо если кто-то посчитает, но и без этого жить можно.
Гораздо больше пользы будет, по-моему, от набора библиотек, совместимых по интерфейсам (хотя бы сверху вниз) между различными диалектами и реализациями Оберона. Это позволит выбрать диалект исходя из его сильных сторон, желательных для решаемых задач. Впрочем, я, не имея возможности и желания подгонять всё делаемое мною под все Оберон-диалекты, например, адаптировал для XDev некоторые библиотечные решения с других реализаций, например,
модуль Strings из POW! Я и дальше планирую работать в этом направлении, но, разумеется, более значительные результаты могут быть достигнуты только сообществом пользователей XDev.