Expressão (ciência da computação)

Em ciência da computação , uma expressão é uma entidade sintática em uma linguagem de programação que pode ser avaliada para determinar seu valor. [1] É uma combinação de uma ou mais constantes , variáveis , funções e operadores que a linguagem de programação interpreta (de acordo com suas regras particulares de precedência e de associação ) e calcula para produzir ("retornar", em um ambiente com estado ) outro valor. Esse processo, para expressões matemáticas , é chamado de avaliação .

Em configurações simples, o valor resultante geralmente é um dos vários tipos primitivos , como numérico, string , booleano , tipo de dados complexo ou outros tipos.

Expressão é muitas vezes contrastada com declaração — uma entidade sintática que não tem valor (uma instrução).

Exemplos

Por exemplo, 2 + 3é uma expressão aritmética e de programação, avaliada como 5. Uma variável é uma expressão porque denota um valor na memória, portanto y + 6também é uma expressão. Um exemplo de expressão relacional é 4 ≠ 4, que resulta em false. [2] [3]

Void como tipo de resultado

Em C e na maioria das linguagens derivadas de C, uma chamada para uma função com um tipo de retorno void é uma expressão válida, do tipo void. [4] Valores do tipo void não podem ser usados, então o valor de tal expressão é sempre descartado.

Efeitos colaterais e eliminação

Em muitas linguagens de programação, uma função e, portanto, uma expressão que contém uma função, pode ter efeitos colaterais . Uma expressão com efeitos colaterais normalmente não possui a propriedade de transparência referencial . Em muitas linguagens (por exemplo, C++), as expressões podem terminar com um ponto-e-vírgula ( ;) para transformar a expressão em uma instrução de expressão . Isso solicita que a implementação avalie a expressão apenas para seus efeitos colaterais e desconsidere o resultado da expressão (por exemplo, x+1;) a menos que seja parte de uma instrução de expressão que induza efeitos colaterais (por exemplo, y=x+1;ou func1(func2());).

Ressalvas

Observe que a noção formal de um efeito colateral é uma alteração no estado abstrato do programa em execução.

Outra classe de efeitos colaterais são as mudanças no estado concreto do sistema computacional, como o carregamento de dados nas memórias cache. As linguagens frequentemente descritas como "livres de efeitos colaterais" geralmente ainda apresentam efeitos colaterais concretos que podem ser explorados, por exemplo, em ataques de canal lateral .

Além disso, o tempo decorrido avaliando uma expressão (mesmo sem outros efeitos colaterais aparentes) às vezes é essencial para a operação correta de um sistema, pois o comportamento no tempo é facilmente visível de fora do ambiente de avaliação por outras partes do sistema com o qual ele interage e pode até ser considerado o efeito principal , como ao realizar testes de benchmark .

Depende da especificação da linguagem de programação específica se uma expressão sem efeitos colaterais abstratos pode ser legalmente eliminada do caminho de execução pelo ambiente de processamento no qual a expressão é avaliada.

Veja também

Referências

  1. ^ Mitchell, J. (2002). Conceitos em Linguagens de Programação. Cambridge: Cambridge University Press, 3.4.1 Declarações e Expressões , p. 26
  2. ^ Expressões Javascript, Mozilla arquivado em 2012-03-09 no Wayback Machine Acessado em 6 de julho de 2009
  3. ^ Programming in C Archived 2015-01-09 at the Wayback Machine Acessado em 6 de julho de 2009
  4. ^ ISO/IEC 9899:1999 seção 6.3.2.2, acessado em 31 de agosto de 2009

links externos

  • Este artigo é baseado no material extraído do Expression at the Free On-line Dictionary of Computing anterior a 1º de novembro de 2008 e incorporado sob os termos de "relicenciamento" do GFDL , versão 1.3 ou posterior.