Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

В информатике , выражение является синтаксический объект в языке программирования , которые могут быть оценены , чтобы определить его стоимость. [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). Концепции языков программирования. Кембридж: Издательство Кембриджского университета, 3.4.1 Утверждения и выражения , стр. 26 год
  2. ^ Выражения Javascript, Mozilla, доступ 6 июля 2009 г.
  3. ^ Programming in C Архивировано 9 января 2015 г. на Wayback Machine, доступ осуществлен 6 июля 2009 г.
  4. ^ ISO / IEC 9899: 1999 раздел 6.3.2.2, доступ31 августа 2009 г.

Внешние ссылки [ править ]

  • Эта статья основана на материалах, взятых из Expression в Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.