Языки программирования Оберон и Оберон-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. Слова языка - это идентификаторы, числа, строки, операции и разделители. Должны соблюдаться следующие лексические правила. Пробелы и концы строк не должны встречаться внутри слов (исключая комментарии и пробелы в символьных строках).