> -- Илья Ермаков писал(а):
> Руслан, все языки Оберон-семейства - это замечательно, но стоит ли ориентироваться на Оберон-1? Тем самым, при создании любых общих решений для семейства, возможности О2 и КП отсекаются. Значит, эти решения будут неудобны для практического использования, и все равно будут создаваться альтернативные.Возможно, стоит опираться на Оберон-2 и КП?

Это весьма принципиальный вопрос.

Здесь есть разные аспекты. Выделю два: технический и маркетинговый.

1. Технический аспект.

Если есть библиотеки (решения), созданные на Обероне, то их можно при определенных минимальных требованиях использовать в Оберон-2 и КП. Обратное в общем случае неверно. Если отрезается язык Оберон, автоматически отрезается подход Вирта к расширяющему программированию, которое низводится в рамках Оберон-2 и КП до уровня "мэйнстрим-ООП + динамические модули".

Безусловно существуют определенные проблемы, связанные с унификацией работы в трех языках. Последние два месяца над этим работает специальная группа из 7 человек. Цель -- проектирование нескольких вариантов стандартной библиотеки Оберона, позволяющей обеспечивать работу в системах программирования для языков Оберон, Оберон-2 и Компонентный Паскаль. Побочный продукт -- методика переноса (миграции) модулей между языками малого Оберон-семейства (Оберон, Оберон-2, КП).

Чем плоха ориентация исключительно на Оберон-2 и КП?

Тем, что в этом случае языки Оберон-семейства теряют главные свои маркетинговые преимущества перед другими языками. И остаются языками маргинального программиирования. Без кавычек.

Оберон -- самый компактный язык, созданный Виртом и фактически зафиксированный 15 лет назад.

Оберон-2 -- экспериментальный язык, созданный проф. Мессенбеком, который перестал им заниматься более 7 лет назад и переключился на модные Java и C#. Кушать хочется всем.

КП -- язык конкретной коммерческой компании. Изменение базовых типов -- не самое страшное. Они создают проблемы несовместимости, но, как выясняется, в Обероне нигде не зафиксировано, что INTEGER -- 16 битов. Это миф, распространяемый непонятно зачем. Размеры практически всех базовых типов в Обероне могут определяться реализацией. SHORTINT действительно фиксируется в 8 битов (точнее в соотв. ему диапазон целочисленных значений). Остальные -- нет.

Связанные процедуры дублируют функциональность использования процедурных типов для формирования методов. А потому процедурные переменные являются едва ли не первейшими кандидатами на исключение из языка КП, описание которого относится к 2001 г. и который по всей видимости еще будет изменяться.

Лицо КП определяют связанные процедуры (type bound) + модификаторы (ABSTRACT, EXTENSIBLE, LIMITED, EMPTY, NEW). Это создает навороты (и новые понятийные проблемы) в ООП по сравнению с моделью Оберона.

Принципиально меняется подход к расширению типа. У Вирта он по умолчанию. На нем и строится расширяющее программирование. У КП -- требует явного модификатора EXTENSIBLE (с точностью до наоборот).

Можно ли создать Оберон-библиотеку, которую можно было бы использовать в Оберон-2 и КП, в том числе путем уточнения (использования специфики языков). Да, можно. Можно ли было сделать BlackBox на Обероне? Безусловно. Можно ли было бы иметь эталонный компилятор Оберона внутри BlackBox, того что на КП? Без сомнений.

Почему не делают очевидные вещи? Потому что не заинтересованы.  Не заинтересованы в сближении даже систем на базе Компонентного Паскаля (имею в виду GPCP), а что касается остального --  есть BlackBox и только BlackBox. Обо всем остальном Обероноподобном, переходя на эту систему, можете смело забыть. Как страшный сон.


2. Маркетинговая сторона

Активно педалируется то, что КП -- язык Вирта. Чушь несусветная. К Вирту имеет самое отдаленное отношение. Внутри ETH даже Оберон-2 воспринимался в штыки (хотя в расширение ETH-компилятора ввели-таки read-only export), а о КП положительного мнения были только его создатели. Пфистер молодец, его детище (Oberon microsystems) как-никак движется вперед. Шиперски -- тот использовал КП как трамплин для своей карьеры в Microsoft Research. Хотя, свой вклад в КП продолжает опосредованно вносить, через университет QUT и систему GPCP.

Чем выигрывает КП в реализации BlackBox? Практичностью, удобством для определенных программистов. Язык придвинут к индустрии (вынужденно, рыночные интересы Oberon microsystems). К чему приведет использование КП в качестве знамени Оберон-движения? К маргинальному программированию. Никаких маркетинговых преимуществ по сравнению с конкурентами (Java, C#) он не имеет. Особенно, если политика его внедрения в массы в России строится на войнах языков ("смерть C++"), а не на мирном сосуществовании.

Оберон перед ведущими промышленными языками преимущества имеет. Самый компактный, поддерживает не одну мэйнстрим-модель ООП, создан Виртом (без рыночных интересов), стабильный, доказал свою жизнеспособность, нейтральный (то есть спокойно может обогащаться OpenSource-движением). Вот его и надо называть автоматом Калашникова (а не КП).

Почему Оберон не двигают? А где компиляторы? Где библиотеки? ETH-компилятор внутри Oberon System -- это несерьезно. Можно ли его оттуда извлечь, довести до ума и встроить в другие IDE (не только BlackBox)? Конечно. Но этим надо заниматься. Заниматься серьезно. Чтобы заниматься, надо, по крайней мере, осознать, что это дает.

Вопрос времени, мотивации, кадров.