Cтраница 2
В большинстве языков программирования программист не имеет возможности управлять представлением абстрактных данных. [16]
![]() |
Сегмент программы на языке ПЛ / 1, иллюстрирующий типы данных. [17] |
В большинстве языков программирования предусмотрена возможность непосредственной обработки лишь ограниченного набора типов данных. [18]
В большинстве языков программирования программа может рассматриваться на трех уровнях. На первом уровне рассматривается программа как набор подпрограмм, на втором - подпрограмма как последовательность операторов языка, на третьем - выражения, включаемые в операторы. Для каждого уровня существуют свои структуры управления последовательностью действий: управление вычислением выражений, управление выполнением последовательности операторов, управление взаимодействием подпрограмм. [19]
В большинстве языков программирования неоднозначности удается разрешить, комбинируя методы, предназначенные для достижения других синтаксических целей. Однако многие особенности синтаксиса языков обязаны своим возникновением именно попыткам преодолеть неоднозначности. [20]
В большинстве языков программирования высокого уровня выражения являются категорией значения. Они могут состоять из константы или переменной, комбинации констант, переменных, символов операций и круглых скобок. В ПЛ / 1 существуют три различных типа выражений: переменные, массивы ис труктуры. Выражения типа переменной, как показывает название, определяют значение переменной. Почти все выражения, встречавшиеся в настоящей книге до сих пор, представляют собой выражения этого типа. Выражение типа массива определяет значение массива. Единственными выражениями этого типа, с которыми мы уже встречались, являются выражения GET или PUT LIST ( А), где А - идентификатор массива. [21]
Правила лексического анализа для большинства языков программирования либо непосредственно описываются регулярной грамматикой ( язык типа 3 по Хомскому), либо становятся пригодными для такого-описания после минимальных изменений и ( или) переупорядочения. [22]
Из-за отмеченной выше нечеткости большинство известных языков программирования и командных языков имеют различные пересечения. Описательные средства таких языков, как ПЛ / 1, Кобол, Алгол и АПЛ, настолько различны, что до сих пор не удалось выработать общего представления о том, что же следует считать программными функциями, а что - запросами на обслуживание. [23]
Указатели широко используются в большинстве языков программирования, причем до недавнего времени их использование поощрялось, так как в ряде случаев позволяло получать экономный и эффективный код. NET отношение к указателям особое. NET, будет рассмотрено в разд. [24]
Одним из наиболее важных понятий большинства языков программирования является понятие о процессе выполнения программы и управлении этим процессом. Иногда это коротко называется ветвлением. Если вы знакомы с другими языками программирования, то вас возможно удивит, почему мы до сих пор не рассматривали это понятие, которое включает в себя выбор для выполнения одного из нескольких операторов и повторение вычисления группы операторов при выполнении некоторых условий. Причина в том, что АПЛ позволяет решить многие задачи проще, без ветвления. [25]
Рассматриваемое различие не отражено в большинстве языков программирования. [26]
Процедуры являются важным средством в большинстве языков программирования. [27]
Следует добавить, что в большинстве языков программирования высокого уровня ( исключением является, например, язык программирования Форт) использованы синтаксические правила ввода последовательностей операторов и операндов, характерные для обычной алгебраической записи формул, отображающих в большей степени отношения между числами, чем последовательность операций. В подобной записи символы одноместных операций записываются перед операндом, например sin x, а двухместных - между операндами, например х у. Однако такая алгебраическая запись удобна для описания отношений между переменными и не соответствует фактическим операциям, выполняемым человеком или ЭВМ только после ввода операндов. Так, при вычислениях по несложной формуле у а - b In ( c / d) и считывании символов правой части равенства слева направо приходится запоминать все знаки операций и операндов и выполнять операции лишь после считывания закрывающей скобки. Это существенно усложняет конструкцию ЭВМ, которая должна не только запомнить все вводимые символы, но и учитывать допустимый порядок выполнения различных операций, например, умножения перед вычитанием, деления перед вычислением логарифма. [28]
Арифметические выражения, составляющие ведущую часть большинства языков программирования для научных применений, могут быть определены грамматикой с операторным предшествованием, построенной на основе правил старшинства арифметических операций. Встречающиеся во Многих языках программирования конструкции, отличные от арифметических выражений, могут быть изменены с помощью лексического анализа и преобразования таким образом, что вход анализатора целиком будет подчиняться правилам грамматики с операторным предшествованием. Анализаторы для грамматик с операторным предшествованием просты л эффективны и поэтому широко используются в компиляторах. [29]
В XPL, как и в большинстве языков программирования, необходимо связывать каждое появление идентификатора с его объявлением. Компилятор ХСОМ осуществляет эту связь посредством таблицы символов, содержащей соответствующую информацию обо всех активных идентификаторах. Информация, требуемая для компиляции, включает имя, тип и адрес ( например, базу и смещение) каждого идентификатора. Для каждой процедуры необходимо также записывать количество, типы и адреса ( но не имена) ее параметров. В таблице символов ХСОМ также записывается строка, в которой была объявлена переменная и количество ссылок на каждый идентификатор, так как эти сведения могут быть полезны для диагностических сообщений. [30]