Языки программирования Оберон и Оберон-2
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
статический тип T. Если динамический тип переменной v не T, то программа аварийно завершается. В языке Oberon-2 оператор WITH может быть записан с разными вариантами:
WITH
v: T0 DO S0 | v: T1 DO S1 ELSE S2 END;
Если динамический тип переменной v это T0, то выполняется последовательность операторов S0, а сама переменная v рассматривается так, как если бы она имела статический тип T0. Если динамический тип переменной v это T1, то выполняется последовательность операторов S1, а переменная v рассматривается так, как если бы она имела статический тип T1. В противном случае выполняется последовательность S2. Если ни один из вариантов не был выполнен и если ELSE-часть отстутствует, то программа аварийно завершается.
5.5 Оператор FOR
Хотя оператор FOR можно всегда выразить через оператор WHILE, все же иногда он более удобен, поскольку имеет лаконичную форму и завершение цикла в нем четко выражено. Его удобно использовать, когда требуется выполнить фиксированное число итераций подобно тому, как это часто нужно в случае работы с массивами. Оператор FOR записывается в виде:
FOR i := a TO b BY step DO statements END
Этот оператор эквивалентен следующей последовательности операторов:
temp := b; i := a; IF step > 0 THEH
WHILE i <= temp DO statements; i := i + step END ELSE
WHILE i >= temp DO statements; i := i + step END END;
6 Сравнение Оберона с другими языками
по сложности
Линия Вирта
Это линия языков, начинающаяся от Алгола-60 и образованная языками Паскаль, Модула-2,
Оберон и Оберон-2, автором которых является Никлаус Вирт, и, что самое главное, линия,
которой Вирт неуклонно придерживается: наращивание мощи языка без его усложнения.
Паскаль намного богаче Алгола, но не сложнее его. Модула существенно мощнее и совершеннее
Паскаля, но проще. Оберон обогатил Модулу средствами объектно-ориентированного
программирования расширяемыми записями, и при этом не только не стал более сложным, но
заметно упрощен.
Удивительным выглядит то, что Оберон-2 оказался проще Оберона, расширением которого
является. В отношении размера определения синтаксиса так оно и есть. Да и по существу
нововведения Оберона-2 оформлены очень экономно. Кроме того авторы языка объединили
отдельные правила для каждой разновидности операторов в одно правило для лексемы
"Оператор". То же сделано в отношении правил для типов. По-другому, более компактно,
определен синтаксис некоторых конструкций. И хотя получившееся упрощение отчасти
формальное, но экономия понятий это именно то, к чему и следует стремиться, как заметил
еще У.Оккам почти 700 лет назад.
Сокращения:
ТП Турбо Паскаль
ОП Объектный Паскаль (Делфи)
Приложение
Описание языка программирования Оберон-2
Примечание: все ссылки указывают на информацию внутри приложения.
The Programming Language Oberon-2H.Moessenboeck, N.WirthInstitut fur Computersysteme, ETH Zurich July 1996
Язык программирования Оберон-2
Х.Мёссенбёк, Н.Вирт
Институт компьютерных систем, ETH, Цюрих
Июль 1996
Перевод с английского С.Свердлова
1 Введение
Оберон-2 - язык программирования общего назначения, продолжающий традицию языков Паскаль и Modula-2. Его основные черты - блочная структура, модульность, раздельная компиляция, статическая типизация со строгим контролем соответствия типов (в том числе межмодульным), а также расширение типов и связанные с типами процедуры. Расширение типов делает Оберон-2 объектно-ориентированным языком. Объект - это переменная абстрактного типа, содержащая данные (состояние объекта) и процедуры, которые оперируют этими данными. Абстрактные типы данных определены как расширяемые записи. Оберон-2 перекрывает большинство терминов объектно-ориентированных языков привычным словарем языков императивных, обходясь минимумом понятий в рамках тех же концепций. Этот документ не является учебником программирования. Он преднамеренно краток. Его назначение - служить справочником для программистов, разработчиков компиляторов и авторов руководств. Если о чем-то не сказано, то обычно сознательно: или потому, что zзык программирования Оберон-2 (перевод с английского) это следует из других правил языка, или потому, что потребовалось бы определять то, что фиксировать для общего случая представляется неразумным. В приложении A определены некоторые термины, которые используются при описании правил соответствия типов Оберона-2. В тексте эти термины выделены курсивом, чтобы подчеркнуть их специальное значение (например, одинаковый тип).
2 Синтаксис
Для описания синтаксиса Оберона-2 используются Расширенные Бэкуса-Наура Формы (РБНФ). Варианты разделяются знаком |. Квадратные скобки [ и ] означают необязательность записанного внутри них выражения, а фигурные скобки { и } означают его повторение (возможно 0 раз). Нетерминальные символы начинаются с заглавной буквы (например, Оператор). Терминальные символы или начинаются малой буквой (например, идент), или записываются целиком заглавными буквами (например, BEGIN), или заключаются в кавычки (например, ":=").
3 Словарь и представление
Для представления терминальных символов предусматривается использование набора знаков ASCII. Слова языка - это идентификаторы, числа, строки, операции и разделители. Должны соблюдаться следующие лексические правила. Пробелы и концы строк не должны встречаться внутри слов (исключая комментарии и пробелы в символьных строках).