ЯЗЫК МАШИННО-ОРИЕНТИРОВАННЫЙ
— язык программирования, который по типам данных и алгоритмической структуре отражает структуру вычислительной машины или класса вычислительных машин. Созданием Я. м.-о. преследуется цель позволить пользователям составлять эффективные программы, учитывающие и использующие структуру вычисл. машин вообще или особенности к.-л. конкретной вычисл. машины. В отличие от языков процедурно-ориентированных Я. м.-о. универсален по отношению к классам задач в том смысле, что его сфера применения совпадает со сферой применения вычисл. машин, на которые он ориентирован. Система команд любой вычислительной машины является простейшим примером Я. м.-о. Широкое использование получили Я. м.-о. - автокоды, соответствующие команд системам конкретных вычисл. машин, но позволяющие составлять программы для этих машин в форме, более удобной для человека. Указанные Я. м.-о. представляют собой Я. м.-о. в узком смысле этого слова.
Принципиально новые возможности предоставляет использование алгоритмических Я. м.-о. (АЯМО), ориентированных на классы вычисл. машин. АЯМО описывает некую абстрактную вычисл. машину, объединяющую все черты, общие для заданного класса конкретных вычисл. машин, и лишенную тех несущественных особенностей, которыми эти машины отличаются друг от друга. Если, напр., все конкретные машины заданного класса имеют одинаковые размеры слов, то и соответствующая абстрактная машина может иметь тот же размер слов. Если же при этом в различных конкретных машинах числа представляются в этих словах по-разному, то в абстрактной машине форма представления чисел не определяется. Это означает, напр., что невозможно рассматривать результаты арифм.
операций как последовательности битов или как команды. Такой отказ от особенностей конкретных машин позволяет эффективно моделировать абстрактную машину на всех конкретных, т. е. переводить программу с АЯМО на языки конкретных машин практически «команда в команду».
С другой стороны, частные особенности конкретных машин редко используются при массовом программировании для ЦВМ. Таким образом, АЯМО дает возможность составлять достаточно эффективные программы из любой области применения, пригодные сразу для целого класса вычисл. машин. Это обстоятельство делает такой язык важным инструментом, обеспечивающим программную совместимость машин и позволяющим создавать для них единое матем. обеспечение, что является осн. проблемой развития вычислительной техники. В частности, АЯМО может быть использован, как базовый язык универсальной системы программирования (т. е. совокупности совместно работающих трансляторов), которая может быть использована на различных вычисл. машинах.
В таких системах АЯМО выполняет сразу три ф-ции: языка промежуточного, языка объединения модулей, получаемых после трансляции с различных проблемно-ориентированных языков, и языка, на котором пишутся сами трансляторы. При этом на каждую конкретную выч. машину пишется один компилятор с АЯМО на язык этой машины. При помощи этого компилятора все трансляторы переводятся на язык конкретной машины. В дальнейшем программы (или части программ), написанные на проблемно-ориентированных языках, переводятся трансляторами на АЯМО, а затем при помощи того же компилятора эти программы объединяются и переводятся на язык конкретной машины.
Опыт показывает, что даже если АЯМО охватывает очень широкий класс вычисл. машин (напр., включающий подавляющее большинство существующих в настоящее время машин), программы, получаемые после такой двухступенчатой трансляции, не только по своей эффективности, но и вообще практически не отличаются от программ, которые получаются прямой трансляцией с проблемно-ориентированных языков. Это объясняется тем, что при трансляции с проблемно-ориентированных языков особенности конкретных вычисл. машин учитываются, как правило, на более поздней стадии, которая при двухступенчатой трансляции соответствует работе компилятора с АЯМО на конкретную машину.
Один из первых шагов в сторону машинной ориентации алгоритмических языков был сделан 1956 при создании адресного языка, в котором одним из объектов обработки является чисто машинный объект — адрес. В 1962—64 в США была предпринята попытка разработать универсальный машинно-ориентироваи-ный язык (UNCOL). Однако эта попытка окончилась неудачей из-за чрезмерной универсализации избранной версии абстрактной машины. В Советском Союзе разработан ряд АЯМО (АЛМО, ЭПСИЛОН и др.).
Лит.: Ющенко Е. Л. Адресное программирование. К., 1963 [библиогр. с. 285—286]; Камынин С. С., Любимский Э. 3. Алгоритмический машинно-ориентированный язык — АЛМО. «Алгоритмы и алгоритмические языки», 1967, в. 1 [библиогр. с. 59—61]; Steel Т. В. A first version of UNCOL. «Proceedings of the western joint computer conference», 1961, v. 19; Бpукep P. А. Программы «Автокод», созданные для вычислительных машин Манчестерского университета. В кн.: Современное программирование. М., 1966. 9. 3. Любимский.