stringtranslate.com

Выражение (информатика)

В информатике выражение это синтаксическая сущность на языке программирования , которая может быть оценена для определения ее значения [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());).

Предостережения

Формальное понятие побочного эффекта — это изменение абстрактного состояния работающей программы.

Другой класс побочных эффектов — это изменения конкретного состояния вычислительной системы, например, загрузка данных в кэш-память . Языки, которые часто называют «без побочных эффектов», как правило, все же имеют конкретные побочные эффекты, которые можно использовать, например, в атаках по побочным каналам .

Более того, время, затраченное на вычисление выражения (даже если оно не имеет других очевидных побочных эффектов), иногда имеет важное значение для правильной работы системы, поскольку поведение во времени легко видно извне среды вычисления другими частями системы, с которыми он взаимодействует и может даже рассматриваться как основной эффект, например, при проведении эталонного тестирования .

От конкретной спецификации языка программирования зависит, может ли выражение без абстрактных побочных эффектов быть законно исключено из пути выполнения средой обработки, в которой вычисляется выражение.

Смотрите также

Рекомендации

  1. ^ Митчелл, Дж. (2002). Концепции языков программирования. Кембридж: Издательство Кембриджского университета, 3.4.1 Утверждения и выражения , стр. 26
  2. ^ Маурицио Габбриелли, Симоне Мартини (2010). Языки программирования – принципы и парадигмы. Springer London, 6.1 Выражения , с. 120
  3. ^ Выражения Javascript, Mozilla. Архивировано 9 марта 2012 г. на Wayback Machine , доступ 6 июля 2009 г.
  4. ^ Программирование на C. Архивировано 9 января 2015 г. на Wayback Machine , доступ 6 июля 2009 г.
  5. ^ ISO/IEC 9899:1999, раздел 6.3.2.2, по состоянию на 31 августа 2009 г.

Внешние ссылки