ПРЕДСТАВЛЕНИЕ ОСНОВНЫХ СИМВОЛОВ
ЯЗЫКА АЛГАМС ЧЕРЕЗ СИМВОЛЫ ПО ГОСТ 19767—74

Основные символы языка АЛГАМС, представляющие из себя слова, коди­руются большими латинскими буквами, взятыми в апострофы. Например: begin кодируется ’BEGIN’.

Основные символы, не имеющие эквивалента в наборе символов по ГОСТ 19767—74, кодируются в соответствии с приведенной ниже таблицей.

Основной символ

Представление

Основной символ

Представление


*

V

’OR’


**

А

’AND’


’LE’

1

’NOT’


’GE’

10

’10’


’NE’

<

і >


’EQV’

>

> I

5

’IMP’





Примечание. Открывающая и закрывающая кавычки кодируются с по­мощью двух апострофов. Остальные основные символы языка АЛГАМС коди­руются соответствующими символами по ГОСТ 19767—74.

ПРИЛОЖЕНИЕ 4 Справочное

ИСТОРИЯ ЯЗЫКА АЛГАМС

Предлагаемый алгоритмический язык АЛГАМС разработан группой ГАМС (группой по автоматизации програм:лирования для машин среднего типа).

Группа ГЛМС была создана по инициативе Польской академии наук Комис­сией многостороннего сотрудничества академий паук социалистических стран по проблеме «Научные вопросы вычислительной техники» в июне 1963 г. Перед группой ГАМС была поставлена задача создания эффективных средств автома­тизации программирования в странах-участниках и, в частности, соответствующе­го языка для описания алгоритмов с ориентацией па машины средней мощности. На первом же рабочем совещании группы ГАМС в октябре 1963 г. в Софии было решено, что основой . такого языка должно быть подмножество языка ЛЛГОЛ-60 и что язык будет называться АЛГАМС.

Хорошо известно, что при всех своих несомненных достоинствах АЛГОЛ-60 обладает свойствами, затрудняющими его использование на машинах с неболь­шим быстродействием и малой оперативной памятью, особенно в тех случаях, когда желательно иметь достаточно эффективные программы. Идея преодоления этих затруднений на пути выделения подмножества языка не нова, и в каком-то смысле, даже указана в первоначальном сообщении о языке АЛГОЛ-60 при упоминании о конкретных представлениях. В связи с трудностями реализации тех или иных свойств языка АЛГОЛ-60, по пути ограничений, то есть выделений некоторых подмножеств, пошло подавляющее большинство авторов транслято­ров.

Поскольку появление самых различных вариантов языка противоречило идее унификации, послужившей толчком к созданию АЛГОЛа, совершенно естествен­ными были усилия по стандартизации подмножеств.

Второй важной проблемой, возникшей па пути внедрения языка АЛГОЛ-60, была необходимость введения в конкретные представления и, в конечном счете, в язык средств, обеспечивающих ввод и вывод информации.

Эти задачи выбора подмножества и введения в язык средств, обеспечиваю­щих ввод и вывод информации, возникли и перед группой ГАМС. Представи­тели Польской академии наук переработали предложенный ими на первом рабо­чем совещании проект языка, и на втором рабочем совещании в апреле 1964 г. в Бухаресте А. Мазуркевич (Польша) доложил вариант АЛГАМСа, признанный основой для построения языка. На этом совещании были рассмотрены проект SUBSET ALGOL и сокращения языка АЛГОЛ-60, предложенные Академией наук СССР, и были приняты текст эталонного языка АЛГАМС, конкретное пред­ставление языка на телетайпе с пятидорожечной перфолентой и конкретное представление в коде RFT.

Недостатком принятого варианта эталонного языка было отсутствие в нем достаточно развитых стандартных процедур для описания ввода-вывода инфор­мации. Уже на следующем рабочем совещании группы ГАМС в октябре 1964 г. в Варшаве наряду с обсуждениями методов трансляции пришлось вернуться к тексту языка для внесения в него дополнений, связанных с вводом-выводом. Эта часть языка подвергалась уточнениям и дополнениям как на совещании ГАМС в марте 1965 г. в Берлине, так и в октябре 1965 г. в Ташкенте, где было принято решение о создании редакционной подгруппы, которая в феврале 1966 г. в Варшаве в составе И. Концевич (Польша), В. М. Курочкина (СССР), Э. 3. Любимского (СССР), Л. Чайа (Польша) и L. Шорца (Польша) составила текст языка АЛГАМС в форме поправок и дополнений к пересмотренному сооб­щению о языке АЛГОЛ-60. Текст поправок и дополнений, предложенный редак­ционной подгруппой, был одобрен на рабочем совещании ГАМС в апреле 1966 г. в Будапеште.

Работа группы ГАМС пересекалась во времени с работой над SUBSET ALGOL-60 (IFIP) в WG2.1. Предложения и решения рабочей группы IFIP/WG2.1 учитывались и оказывали влияние на работу группы ГАМС. Выход в апреле 1964 г. окончательной реакции сообщения о SUBSET ALGOL-60 (IFIP) заста­вил группу ГАМС заново проанализировать уже принятые ею решения с целью возможного исключения отличий языка АЛГАМС от SUBSET ALGOL-60, Конеч­но, речь шла не об устранении всех имеющихся отличий, поскольку в язык АЛГАМС уже были включены важные свойства, которые полностью отсутство­вали в SUBSET ALGOL-60.

В конечном счете, если не считать запрещения строчных скобок внутри строк в АЛГАМСе, SUBSET ALGOL-60 оказался подмножеством языка АЛГАМС, В последнем по сравнению с SUBSET ALGOL-60 нет ограничения на изображе­ние идентификаторов, нет ограничений на употребление операции возведения в степень, в определенных случаях разрешена подстановка фактических парамет­ров типа integer па место формальных параметров типа real и, наконец, разре­шена подстановка выражений по наименованию.

Настоящее приложение не ставит перед собой цели обоснования тех или иных решений, принятых группой ГАМС. Однако в качестве иллюстрации моти­вов для таких решений можно рассмотреть отличие SUBSET ALGOL-60 от АЛГАМСа в части изображения идентификаторов. Принятое в первом ограниче­ние, согласно которому результат появления различных идентификаторов с сов­падающими первыми шестью символами неопределен, может быть по существу использовано транслятором лишь при отказе от анализа этой неопределенной си­туации и индикации ошибки. Ведь для обнаружения такой ошибки необходимо хранить все символы встречающихся идентификаторов. В то же время группа ГАМС считала с одной стороны невозможным отказ от индикации ошибок, свя­занных с неправильным изображением идентификаторов, а с другой стороны стремились к тому, чтобы каждое ограничение на язык давало заметную выгоду при трансляции или в эффективности получаемых программ.

В языке АЛГАМС заметно расширен набор стандартных функций и проце­дур, а также предложен некоторый синтаксис для использования библиотечных подпрограмм. При этом исключено синтаксически неопределенное понятие <код>.

Процедуры ввода—вывода языка АЛГАМС являются переработанным и уп­рощенным вариантом известных предложений комиссии Д. В. Кнута для языка АЛГОЛ-60. При выборе этого варианта были подробно исследованы возможные реализации с учетом имеющегося оборудования.

В язык АЛГАМС включены средства, позволяющие дать указания о воз­можной сегментации программы, так называемые идентификаторы части, а так­же средства, дающие возможность эффективно использовать буферные памяти машины путем описаний некоторых из массивов особыми идентификаторами (на­чинающимися с букв ЕХ). Доступ к таким массивам осуществляется при помо­щи специальной стандартной процедуры COPY. Все эти свойства должны замет­но повысить эффективность использования языка как средства автоматизации программирования.

Поскольку основой языка АЛГАМС был принят АЛГОЛ-60, группа ГАМС сочла возможным широко использовать текст пересмотренного сообщения о язы­ке АЛГОЛ-606 и его русский перевод7, изменяя его, как правило, лишь в тех в код любой вычислительной машины, оснащенной транслятором с АЛМО. (В на­стоящее время эксплуатируются трансляторы с АЛМО для БЭСМ-6, М-220 и некоторых других типов машин и завершается разработка транслятора для ЕС ЭВМ).

ПРИЛОЖЕНИЕ 5 Справочное

ОТЛИЧИЯ АЛГАМСа ОТ ЯЗЫКА АЛГОЛ-60

  1. Используется один регистр букв (в вышеприведенном тексте языка ис­пользуются лишь прописные латинские буквы).

  2. Выброшен знак -4- (деление нацело реализуется с помощью стандартной функции).

  3. Нет понятия own.

  4. Упрощена конструкция строк.

  5. Если для определения типа арифметического выражения необходимо вы­полнять какие-либо вычисления, проверки условий или присваивания, то счита­ется, что выражение имеет тип real (см. пп. 3.3.4.3 и 3.3.4.4.).

  6. Именующими выражениями могут быть только метки и указатели пере­ключателя. Переключательный список может состоять только из меток. Целое без знака не может быть меткой. При неопределенном указателе переключателя оператор перехода также неопределен.

  7. Управляемой переменной цикла (параметром цикла) может быть только простая переменная.

  8. Все формальные параметры процедуры должны быть специфицированы. При вызове по наименованию класс и тип фактического параметра, вообще гово­ря, должен совпадать с классом и типом формального параметра (п. 4.7.5.5).

  9. Не допускается рекурсивное использование процедур.

  10. Не допускается побочный эффект.

  11. Уточнено использование кода в качестве тела процедуры пп. 5.4.1, 5.4.3).

  12. Описание идентификатора (за исключением меток) должно предшество­вать его использованию.

  13. Введены понятия внешнего идентификатора и идентификатора части. Добавлен раздел 6 о стандартных функциях и стандартных процедурах (проце­дуры, осуществляющие ввод, вывод и обмен информацией).

Редактор С. Г. Вилышна
Технический редактор В. Ю. Смирнова
Корректор Е. И. Евтеева

Сдано в наб. 04.10.78 Подп. в печ. 31.05.79 3,0 п. л. 2,84 уч.-изд. л. Тир. 6000 Цена 15 коп.

1 Соответствие между английскими и русскими служебными словами ука­зано в справочном приложения 2.

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

3 true истина, false —ложь.

4 Перевод английских слов, изображающих ряд основных символов: go to перейти к, if— если, then— го, else— иначе, с г— для, оо выполнить, step шаг, until— до, while— пока, comment — примечание, begin — начало, end— конец, Boolean — булевский, или логический, integer — целый, real веществен­ный, array— массив, switch—переключатель, procedure— процедура, string — строка, label —■ метка, value — значение

5 В данном примере и далее в некоторых случаях, когда идентификатор имеет мнемоническое значение, он записывается русскими словами. При этом будет предполагаться, что алфавит расширен введением строчных русских букв.

6 Revised report on the algorithmic language ALGOL 60 by J. W. Backus, F. L. Bauer, J. Green, C. Katz, J. Me Carthy, P. Naur, A. J. Perlis, H. Rutisha- user, K. Samelson, B. Vauquois, J. H. Wegstein, A. von Wijngaarden, M. Woodger. Edited by Peter Naur. International Federation for Information Processing, 1962.

7 Алгоритмический язык АЛГОЛ-60. Пересмотренное сообщение. [Пер. с англ.]. Под рсд. А. П. Ершова, С. С. Лаврова, М. Р. Шура-Бура. М. Изд-во «Мир», 1965 г.

местах, которые были связаны с изменениями и дополнениями. Однако в неко­торых случаях текст Revised report был изменен не для придания ему нового смысла, а с целью упрощения формы изложения. Эти изменения не отражены в помещенном в качестве дополнения списке отличий АЛГАМСа от языка АЛГОЛ-60, предназначенном для лиц, хорошо знакомых с языком АЛГОЛ-60.

В работе группы ГАМС систематически принимали участие М. Апостолова (Болгария), Т. Бакош (Венгрия), Д. Вайда (Румыния), Ф. Грунд (ГДР), Б. До- мелки (Венгрия), И. Кернер (ГДР), Е. Киндлер (Чехословакия), П. Константи- неску (Румыния), И. Концевич (Польша), Я. Крал (Чехословакия), Р. Кретер (ГДР), В. М. Курочкин (СССР), Э. 3. Любимский (СССР), А. Мазуркевич (Польша), 10. Мароиьский (Польша), М. Русева (Болгария), Б. Сендов (Бол­гария), Д. Станку. (Румыния), В. Фолтепи (Венгрия), Л. Чайа (Польша), П. Шорц (Польша), Р. Штробель (ГДР), М. Р. Шура-Бура (СССР).

В 1971 г. в институте прикладной математики АН СССР был разработан транслятор с АЛГАМСа на универсальный машинно-ориентированный язык прог­раммирования АЛМО. что позволяет осуществлять трансляцию с языка АЛГАМС

Ордена «Знак Почета» Издательство стандартов. Москва, Д-557, Новопресненский пер., 3.
Тип. «Московский печатник», Москва, Лялин пер., д. 6. Зак 1485