ПРЕДСТАВЛЕНИЕ ОСНОВНЫХ СИМВОЛОВ
ЯЗЫКА АЛГАМС ЧЕРЕЗ СИМВОЛЫ ПО ГОСТ 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
Используется один регистр букв (в вышеприведенном тексте языка используются лишь прописные латинские буквы).
Выброшен знак -4- (деление нацело реализуется с помощью стандартной функции).
Нет понятия own.
Упрощена конструкция строк.
Если для определения типа арифметического выражения необходимо выполнять какие-либо вычисления, проверки условий или присваивания, то считается, что выражение имеет тип real (см. пп. 3.3.4.3 и 3.3.4.4.).
Именующими выражениями могут быть только метки и указатели переключателя. Переключательный список может состоять только из меток. Целое без знака не может быть меткой. При неопределенном указателе переключателя оператор перехода также неопределен.
Управляемой переменной цикла (параметром цикла) может быть только простая переменная.
Все формальные параметры процедуры должны быть специфицированы. При вызове по наименованию класс и тип фактического параметра, вообще говоря, должен совпадать с классом и типом формального параметра (п. 4.7.5.5).
Не допускается рекурсивное использование процедур.
Не допускается побочный эффект.
Уточнено использование кода в качестве тела процедуры пп. 5.4.1, 5.4.3).
Описание идентификатора (за исключением меток) должно предшествовать его использованию.
Введены понятия внешнего идентификатора и идентификатора части. Добавлен раздел 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