Математическая энциклопедия

Алгол-68

Алгол-68
АЛГОЛ-68

- универсальный алгоритмический язык, разработанный в 1964Ч68 коллективом ученых 12 стран в составе рабочей группы по алголу Международной федерации по обработке информации для обмена алгоритмами, для эффективного их выполнения на различных вычислительных машинах и как средство для изучения алгоритмов. Сохраняя стилистич. связь с алголом-60, А.-68 существенно отличается от него богатством и общностью конструкций. Основными видами данных, в дополнение к типам алгола-60 «вещественный», «целый» и «логический», могут быть «литерный» (для буквенно-цифровой информации), «форматный» (для описания формата внешней информации), имя и процедура. Таким образом, имена и процедуры могут «вычисляться» при выполнении программы на А.-68, хотя это вычисление ограничивается динамич. выбором значения имени или процедуры из явно заданной конечной совокупности. Из основных видов можно индуктивно строить новые, составные виды, представляющие либо однородные индексируемые последовательности данных одного вида (ыультизначения), либо упорядоченные наборы данных произвольного вида (структуры).

В дополнение к обычному аппарату описания процедур А.-68 содержит средства для описания так наз. инфиксных операций типа х+у Наличие описания приоритета позволяет задавать отношения старшинства между вводимыми инфиксными операциями. Характерное для А.-68 описание тождества является универсальной конструкцией для описания переменных, задания начальных значений, организации подстановки фактич. параметров в процедуры и для задания синонимии.

В А.-68 в позиции выражения может стоять оператор присваивания или даже любая цепочка операторов, вырабатывающая нек-рое значение. В сочетании с возможностью вычисления имен и процедур, а также введением парных скобок для условных выражений это приводит к допустимости в А.-68 конструкций, поясняемых следующим примером:

1)  Алгол-68:

010119-222.jpg

2)   Алгол-60:

010119-223.jpg

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

Описание семантики А.-68 характерно углубленной проработкой основных концепций алгоритмич. языков, позволяющей с помощью небольшого числа независимых фундаментальных понятий точно описывать процесс выполнения программы. Различаются внешние (относящиеся к конструкциям программы) и внутренние (относящиеся к данным, в том числе к процедурам и именам) объекты. Аксиоматически вводятся отношения между внешними (Е) и внутренними (I) объектами, напр. 010119-224.jpg,010119-225.jpg 010119-226.jpg ,010119-227.jpg«010119-228.jpgявляется компонентой 010119-229.jpg» и т. п. Выполнение программы описывается в терминах введенных отношений как функция разбора программы.

Особенностью синтаксиса А.-68 является его задание в виде двухступенчатой грамматики, когда порождающие правила A.-6S являются сами допустимыми текстами в нек-ром метаязыке, заданном своей порождающей грамматикой. Грамматич. правила А.-68 имеют, напр., вид:

010119-230.jpg

Нек-рые понятия метаязыка, напр. ВИД, могут иметь бесконечное число порождений. Собственно порождающие правила А.-68 получаются систематич. заменой понятий метаязыка в грамматич. правилах на любое одно и то же их порождение. Результирующие правила в металингвистич. обозначениях алгола-60 выглядят, напр., так:

010119-231.jpg

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

Лит.:[1] Ван Вейнгаарден А. [и др.], Сообщение об алгоритмическом языке АЛГОЛ-68, «Кибернетика», 1969, №6, с. 23Ч145; 1970, №1, с. 13Ч160; [2] Линдси Ч., Мюйлен С, Неформальное введение в АЛГОЛ-68, пер. с англ., М., 1973.

А. П. Ершов.

Математическая энциклопедия. — М.: Советская энциклопедия 1977—1985