Extacy - система разработки ПО на языках Модула-2 и Оберон-2

Мы  предлагаем вашему вниманию систему разработки ПО на языках
Модула-2 и Оберон-2, которая включает:

- транслятор  с Модулы-2 в ANSI C;
- транслятор с Оберона-2 в ANSI C;
- библиотеки  и  сервисные  утилиты;
- документацию на русском языке.

Система работает на многих платформах, в том числе под MS-DOS,
VAX/VMS и на большинстве распространенных рабочих станций.

Extacy  можно  использовать  как  для  разработки  нового  ПО,
используя любой C компилятор в качестве пост-процессора, так и
для  конвертирования  существующих текстов на языке Модула-2 с
целью их переноса на другие платформы.

Трансляторы  порождают текст в стандарте ANSI C. Богатый набор
опций   позволяет   варьировать   результат  трансляции.  Так,
например,  одна  из  опций позволяет переносить комментарии из
исходного в порождаемый текст.

Extacy  разработана  совместно  с  британской  фирмой  RTA.  В
настоящее  время  система успешно распространяется на западном
рынке среди профессиональных разработчиков.

Если  вы  заинтересованы  в  такой  системе,  то по запросу мы
вышлем вам более подробную информацию.

Мы  также можем рассмотреть предложения по переносу системы на
ваши платформы.

================================================

Компоненты системы
--------------------------------------------------------------
Транслятор из Модула-2 в C
Транслятор из Оберон-2 в C
Утилита визуализации определяющего модуля для Оберон-2
Утилита поддержки проекта
Библиотеки из "Программирования на Модуле-2"
Библиотечный интерфейс к ANSI C
Дополнительный набор библиотек


Обзор
--------------------------------------------------------------
Система  Extacy  - первая коммерческая реализация программного
языка   Оберон-2,   созданного   Никлаусом   Виртом.   Система
поддерживает   язык   Модула-2,   что  позволяет  использовать
существующие  библиотеки  на  языках  Модула-2  и  C,  а также
сгладить    переход   к   Оберону-2.   Трансляторы   порождают
стандартный  оптимизированный  ANSI C код. Программный проект,
разрабатываемый   в   системе   Extacy,   может   состоять  из
произвольной  смеси  модулей на Модуле-2, Обероне-2 и C. Таким
образом,   мы   имеем   дело  с  по-настоящему  мультиязыковой
системой.

Модула-2 в Extacy
--------------------------------------------------------------

Модула-2 транслятор - m2c - реализует язык, описанный Н.Виртом
в  работе  "Программирование  на  Модуле-2" (3 и 4 издания), с
добавлением некоторых расширений, а именно:

- обероновский стиль представления численных констант;
- динамически открытые массивов;
- массивы констант;
- параметры только для чтения;
- процедуры с переменным числом параметров;
- экспорт только для чтения;
- переименование импортируемых модулей;
- средства мультиязыкового программирования.

Оберон-2 в Extacy
--------------------------------------------------------------

Оберон-2 транслятор - o2c - реализует язык, описанный Н.Виртом
и  Х.Моссенброком в работе "Язык программирования Оберон-2", с
некоторыми расширениями, включающими:

- реализация типа CARDINAL (с вариациями LONG и SHORT);
- перечислимые типы;
- функции HIGH и VAL, как в Модуле-2;
- константные массивы;
- параметры только для чтения;
- модуловский стиль представления численных констант;
- средства мультиязыкового программирования.


Порождаемый C код
--------------------------------------------------------------

Трансляторы порождают стандартный оптимизированный ANSI C код.
Ключи    компилятора   позволяют,   однако,   использовать   в
порождаемом  коде устаревшие конструкции, такие, как прототипы
функций  в  стиле  Кернигана-Риччи. Порожденный код также
компилируется любым AT&T-совместимым С++ компилятором.

Правильные  ANSI  C компиляторы - редкость, и потому Extacy не
требует 100% совместимости. Нехитрые механизмы позволят решить
проблемы, могущие возникнуть с вашим C-компилятором.

Для облегчения процесса  отладки текстов на С ключи  
компилятора позволяют вставить номера строк  исходных  кодов  в  
качестве  комментария в порождаемый C-текст.  Кроме того, 
имеется возможность  сохранить  комментарии в в порожденном 
тексте в их первоначальном контексте.

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

Для  существующих Модула-2 программистов (в предположении, что
ваш  код написан на хорошей стандартной Модуле-2), подключение
ваших  существующих  библиотек к Оберон-2 проекту - это просто
их перекомпиляция с помощью Extacy.

C  является  сегодня  самым  популярным  в  мире языком, и как
таковой он обладает широчайшим диапазоном доступных библиотек.
Поскольку   в   Extacy  C  используется  как  объектный  язык,
подключение  C-библиотек  к  Оберон-2  или  Модула-2  проектам
заключается  в  написании модуловских определяющих модулей для
каждого C-header файла, который вы используете. Достаточно 
включить   в   этот  определяющий  модуль только те  функции  и
определения, которые вы используете.

Стандартный  библиотечный  интерфейс  ANSI  C, предоставляемый
Extacy, послужит вам неплохим руководством, как это делается.


Библиотечная поддержка
--------------------------------------------------------------

Библиотеки  Extacy  постоянно увеличиваются и расширяются. Все
библиотеки  доступны и могут быть импортироваться в Модула-2 и
Оберон-2  модули,  и  поддерживаются  в виде исходных текстов.
Библиотеки делятся на три группы:

Библиотеки из "Программирования на Модуле-2"
--------------------------------------------

Эти  библиотеки, описанные Н.Виртом в работе "Программирования
на Модуле-2". Они состоят из:
     - InOut
     - RealInOut
     - LongInOut
     - Storage
     - Terminal
     - ASCII


Библиотечный интерфейс к ANSI C
-------------------------------

Это  определяющие  модули и симфайлы, позволяющие использовать
существующие ANSI C библиотеки. Сюда входят:

     - ctype
     - math
     - string
     - mem
     - assert
     - stdio
     - stdlib
     - time
     - io
     - conio

Дополнительный набор библиотек
------------------------------

Предоставляется несколько  полезных библиотек, вот они:

Args - обеспечивает доступ к аргументам командной строки.

Clock - поддерживает доступ к реальному времени и выдает время
в различных форматах.

Formats - процедуры форматного вывода.

regExpr   -   мощная   библиотека   для   сравнения   строк  с
использованием регулярных выражений.

SIO - потоковый ввод/вывод.

Strings - различные процедуры обработки строк.

Существует несколько дополнительных библиотек, специфичных для
определенных  платформ.  Например,  MS/DOS-реализация снабжена
библиотекой ERRNO, которая дает полные определения стандартных
возвращаемых кодов ошибок в DOS.

Дальнейшее развитие библиотек
--------------------------------------------------------------

Набор  библиотек Extacy постоянно пополняется и увеличивается.
Полный  набор стандартных Оберон-2 библиотек разрабатывается и
будет поддерживаться дальнейшими версиями.

Утилиты
--------------------------------------------------------------

Extacy  содержит утилиту поддержки проекта, которая служит для
автоматической   перетрансляции  выбранных  модулей,  а  также
утилиту  визуализации  определяющего  модуля,  которая создает
псевдо-определяющие  модули  для  Оберон-2 исходников, как это
описано    в    работе    Н.Вирта    и   Х.Моссенброка   "Язык
программирования Оберон-2".

Где будет работать Extacy
--------------------------------------------------------------

PC под MS/DOS
PC под Interactive и SCO Unix
PC и PS-2 под OS/2(v2)
Apple Macintosh
Commodor Amiga
Acorn Archimedes под Risc-OS

SUN 3, SPARC (все модели), 386
Hewlett Packard 9000/7xx & 8xx под HP-UX
MIPS Risc Workstation под Risc/os
Silicon Graphics Iris серии (4D workstations, Indigo и Crimson)
под IRIX
IBM RS/6000 под AIX
DEC DECStation/System под Risc/Ultrix (TBA)

Перенесение  на  широкий  диапазон  рабочих  станций  под Unix
продолжается.