Выражение (информатика)
В информатике выражение — это синтаксическая сущность языка программирования , которую можно оценить для определения ее значения. [1] или не удастся завершить работу, и в этом случае выражение не определено. [2] Это комбинация одной или нескольких констант , переменных , функций и операторов , которые язык программирования интерпретирует (в соответствии со своими особыми правилами приоритета и ассоциации ) и вычисляет для создания («возврата» в среде с сохранением состояния ) другого значения. . Этот процесс для математических выражений называется оценкой .В простых настройках результирующее значение обычно является одним из различных примитивных типов , например строковым , логическим или числовым (например , целым , с плавающей запятой или комплексным ).
Выражения часто противопоставляются операторам — синтаксическим объектам, не имеющим значения (инструкции).
Примеры [ править ]
2 + 3
является одновременно арифметическим и программным выражением, которое оценивается как 5
. Переменная является выражением, поскольку она обозначает значение в памяти , поэтому y + 6
это тоже выражение. Примером выражения отношения является 4 ≠ 4
, который оценивается как false
. [3] [4]
Пустота как тип результата [ править ]
В C и большинстве языков, производных от C, вызов функции с возвращаемым типом void является допустимым выражением типа void. [5] Значения типа void использовать нельзя, поэтому значение такого выражения всегда отбрасывается.
Побочные эффекты и устранение [ править ]
Во многих языках программирования функция и, следовательно, выражение, содержащее функцию, могут иметь побочные эффекты . Выражение с побочными эффектами обычно не обладает свойством ссылочной прозрачности . Во многих языках (например, C++ ) выражения могут заканчиваться точкой с запятой ( ;
), чтобы превратить выражение в оператор выражения . Это требует от реализации оценивать выражение только на предмет его побочных эффектов и игнорировать результат выражения (например, x+1;
), если только он не является частью оператора выражения, вызывающего побочные эффекты (например, y=x+1;
или func1(func2());
).
Предостережения [ править ]
Формальное понятие побочного эффекта — это изменение абстрактного состояния работающей программы.
Другой класс побочных эффектов — это изменения конкретного состояния вычислительной системы, например, загрузка данных в кэш-память . Языки, которые часто называют «без побочных эффектов», как правило, по-прежнему имеют конкретные побочные эффекты, которые можно использовать, например, в атаках по побочным каналам .
Более того, затраченное время на вычисление выражения (даже если оно не имеет других очевидных побочных эффектов) иногда важно для правильной работы системы, поскольку поведение во времени легко видно извне среды вычисления другими частями системы, с которыми он взаимодействует и может даже рассматриваться как основной эффект, например, при проведении эталонного тестирования .
От конкретной спецификации языка программирования зависит, может ли выражение без абстрактных побочных эффектов быть законно исключено из пути выполнения средой обработки, в которой вычисляется выражение.
См. также [ править ]
Ссылки [ править ]
- ^ Митчелл, Дж. (2002). Концепции языков программирования. Кембридж: Издательство Кембриджского университета, 3.4.1 Утверждения и выражения , стр. 26
- ^ Маурицио Габбриелли, Симоне Мартини (2010). Языки программирования – принципы и парадигмы. Springer London, 6.1 Выражения , с. 120
- ^ Выражения Javascript, Mozilla. Архивировано 9 марта 2012 г. на Wayback Machine, доступ 6 июля 2009 г.
- ^ Программирование на C. Архивировано 9 января 2015 г. на Wayback Machine, доступ 6 июля 2009 г.
- ^ ISO/IEC 9899:1999, раздел 6.3.2.2, по состоянию на 31 августа 2009 г.
Внешние ссылки [ править ]
- Эта статья основана на материалах, взятых из Expression в Бесплатном онлайн-словаре вычислительной техники до 1 ноября 2008 г. и включенных в соответствии с условиями «повторного лицензирования» GFDL версии 1.3 или более поздней.