Cтраница 1
Примитивные операции mkid и repld, вводимые данной конструкцией, могут использоваться только в пределах фразы with и не известны вне ее. [1]
Примитивные операции представляются в программах различными способами. Для арифметических операций сразу же приходит в голову стандартная инфиксная система обозначений, например X У, но используется и много других. Некоторые из основных систем обозначений, применяемых для представления операций внутри выражений, рассматриваются в следующей главе в контексте управления последовательностью действий внутри выражений. Для важных операций часто применяются специальные синтаксические формы. Например, в большинстве языков операции ввода-вывода имеют форму специальных инструкций, а в языках, подобных Алголу, описания часто служат также и для определения операций, создающих структуры данных. Другие операции вызываются неявно: например, преобразования типов данных в смешанных выражениях часто происходят автоматически. Как обычно, особенности синтаксического представления операции не имеют особого значения; главным являются лежащие в ее основе семантические понятия. [2]
Примитивные операции, используемые абстрактной машиной, могут быть разделены на 4 класса: операции со стеком и дампом, создание и изменение вершин графа ( и, таким образом, графов), вызов функций и возврат из них, а также вычисление применений примитивных функций. Каждая такая операция представлена макросом в коде G-машины, генерированном компилятором; эти макросы образуют набор команд абстрактной машины, который может быть реализован на любом компьютере, обладающем соответствующими языковыми средствами. Например, макроинструкции PUSH и SLIDE требуют применения команд с индексированием. Таким образом, промежуточный язык, основанный на макросах, является мобильным и может быть реализован на выбранном компьютере с помощью обычных языков программирования или машинного языка. [3]
Примитивные операции отношения необходимы для сравнения числовых значений целых, вещественных и с двойной точностью. [4]
Главной примитивной операцией Снобола 4 является операция сопоставления с образцом. Есть много примитивов для создания образцов. Имеются также основные арифметические, логические примитивы и примитивы отношений. Операции создания структур данных исключительно гибки. [5]
Набор встроенных примитивных операций может быть обычным образом расширен с помощью определений подпрограмм. [6]
Среди встроенных примитивных операций имеются простые арифметические и логические примитивы, операции отношения и некоторые простые операции для сканирования цепочек литер и замены их частей. Вследствие большого разнообразия возможных типов особое значение имеет присваивание, включающее автоматическое преобразование типа присваиваемого значения к типу переменной, которой это значение присваивается. Как и следовало ожидать, имеется мощный набор примитивов ввода-вывода для доступа к внешним файлам различного вида и их обработки. Сюда относятся операции ввода-вывода для последовательных, индексно-последовательных файлов и файлов с прямым доступом, примитив SORT и генератор отчетов, позволяющий автоматически строить сложные выходные форматы. [7]
Второй набор примитивных операций называется внутренними функциями. В этот набор входят функции явного преобразования типа числовых данных ( из вещественного в целый, из вещественного в вещественный с двойной точностью) и специфические функции вычисления максимального, минимального, абсолютного значения для различных типов числовых данных. При компиляции внутренние функции обычно реализуются в виде совокупности машинных команд, вставляемых в программу. [8]
По-видимому, множество примитивных операций довольно велико. [9]
Как и в случае примитивных операций, в языках с декларируемыми типами данных важно иметь декларации типа для результата подпрограммы-функции. [10]
В Фортране предусмотрен обширный набор примитивных операций для выполнения арифметических действий, а также для преобразований между четырьмя типами числовых данных. Предусмотрены также основные операции отношений и логические операции. [11]
В языках программирования существует множество различных примитивных операций. Почти в каждом языке имеется небольшое число операций, свойственных только ему одному. [12]
Вычислительная машина, в которой выполнение примитивных операций инициируется наличием операндов. [13]
Если алгоритм нельзя записать с помощью примитивных операций, имеющихся в языке, полезен второй тип подпрограмм - подпрограммы, написанные на другом языке. Подпрограммы этого класса встречаются реже. Вследствие трудности реализации взаимосвязей между программами, написанными на разных языках, и вследствие различий в требованиях к управлению памятью это средство применяется в довольно специальных случаях. Обычно могут использоваться только заранее скомпилированные подпрограммы, написанные на Фортране или языке ассемблера. [14]
Трансляция и выполнение могут быть также примитивными операциями в языке. Обычно ситуация выглядит следующим образом. Выполняется программа Р, написанная на некотором языке L. Данные Q представляют программу, которую Р должна выполнить. Это может быть, например, цепочка литер, представляющая корректную программу на языке L. В данном случае перед выполнением необходимо странслировать Q в выполняемую форму. Q может уже иметь выполняемую форму, если, как в Лиспе, такая форма программы относится к обычным структурам данных языка. В этом случае трансляция не нужна. [15]