stringtranslate.com

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

В информатике выражение это синтаксическая сущность в языке программирования , которая может быть оценена для определения ее значения . [1] Это комбинация одной или нескольких констант , переменных , функций и операторов , которые язык программирования интерпретирует (в соответствии с его конкретными правилами приоритета и ассоциации ) и вычисляет для получения («возвращения», в среде с сохранением состояния ) другого значения. Этот процесс для математических выражений называется вычислением . В простых настройках результирующее значение обычно является одним из различных примитивных типов , таких как строка , логическое значение или число (например , целое число , число с плавающей точкой или комплексное ).

Выражения часто противопоставляются утверждениям — синтаксическим сущностям, не имеющим значения (инструкциям).

Примеры

2 + 3является как арифметическим , так и программным выражением, которое вычисляется как 5. Переменная является выражением, поскольку она обозначает значение в памяти , поэтому y + 6также является выражением. Примером реляционного выражения является 4 ≠ 4, которое вычисляется как false. [2] [3]

Пустота как результат типа

В C и большинстве производных от C языков вызов функции с возвращаемым типом void является допустимым выражением типа void. [4] Значения типа void не могут быть использованы, поэтому значение такого выражения всегда отбрасывается.

Побочные эффекты и устранение

Во многих языках программирования функция и, следовательно, выражение, содержащее функцию, могут иметь побочные эффекты . Выражение с побочными эффектами обычно не обладает свойством ссылочной прозрачности . Во многих языках (например, C++ ) выражения могут заканчиваться точкой с запятой ( ), чтобы превратить выражение в оператор; выражения . Это требует от реализации оценивать выражение только на предмет его побочных эффектов и игнорировать результат выражения (например ), если только он не является частью оператора выражения, который вызывает побочные эффекты (например или ).x+1;y=x+1;func1(func2());

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

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

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

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

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

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

Ссылки

  1. ^ Митчелл, Дж. (2002). Концепции в языках программирования. Кембридж: Cambridge University Press, 3.4.1 Операторы и выражения , стр. 26
  2. ^ Выражения Javascript, Mozilla Архивировано 09.03.2012 на Wayback Machine Доступно 6 июля 2009 г.
  3. Программирование на языке C. Архивировано 09.01.2015 на Wayback Machine. Доступно 6 июля 2009 г.
  4. ^ ISO/IEC 9899:1999 раздел 6.3.2.2, доступ 31 августа 2009 г.

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