stringtranslate.com

Valor (informática)

En informática y programación de software , un valor es la representación de alguna entidad que puede ser manipulada por un programa. Los miembros de un tipo son los valores de ese tipo. [1]

El "valor de una variable" viene dado por el mapeo correspondiente en el entorno . [2] En lenguajes con variables asignables , se hace necesario distinguir entre el valor r (o contenido) y el valor l (o ubicación) de una variable. [3]

En lenguajes declarativos (de alto nivel), los valores deben ser referencialmente transparentes . Esto significa que el valor resultante es independiente de la ubicación de la expresión necesaria para calcular el valor. Sólo son significativos el contenido de la ubicación (los bits, ya sean 1 o 0) y su interpretación. [ cita necesaria ]

categoría de valor

A pesar de su nombre, en los estándares del lenguaje C++ esta terminología se utiliza para categorizar expresiones, no valores. [4] : 8.2.1 

Asignación: valores l y valores r

Algunos lenguajes usan la idea de valores l y valores r , que se derivan del modo típico de evaluación en el lado izquierdo y derecho de una declaración de tarea. Un valor l se refiere a un objeto que persiste más allá de una sola expresión. Un valor r es un valor temporal que no persiste más allá de la expresión que lo utiliza. [5]

La noción de valores l y valores r fue introducida por el lenguaje de programación combinado (CPL). Las nociones en una expresión de valor r, valor l y valor r/valor l son análogas a los modos de parámetro de parámetro de entrada (tiene un valor), parámetro de salida (se puede asignar) y parámetro de entrada/salida. (tiene un valor y se puede asignar), aunque los detalles técnicos difieren entre contextos e idiomas.

Valores R y direcciones

En muchos lenguajes, especialmente en la familia C , los valores l tienen direcciones de almacenamiento a las que el programa en ejecución puede acceder mediante programación (por ejemplo, a través de algún operador de dirección como "&" en C/C++), lo que significa que son variables o referencias referenciadas a una determinada ubicación de memoria. Los valores R pueden ser valores l (ver más abajo) o valores distintos de l, un término que solo se utiliza para distinguir de los valores l. 4 + 9Considere la expresión C. Cuando se ejecuta, la computadora genera un valor entero de 13, pero debido a que el programa no ha designado explícitamente en qué parte de la computadora se almacena este 13, la expresión no es un valor de l. Por otro lado, si un programa en C declara una variable x y asigna el valor de 13 a x, entonces la expresión xtiene un valor de 13 y es un valor l.

En C, el término valor l originalmente significaba algo a lo que se podía asignar (de ahí el nombre, que indica que está en el lado izquierdo del operador de asignación), pero como la palabra reservada const(constante) se agregó al lenguaje, el término ahora es 'valor l modificable'. En C++11 existe un glifo semántico especial &&(que no debe confundirse con el &&operador utilizado para operaciones lógicas), para indicar el uso/acceso de la dirección de la expresión sólo para el compilador ; es decir, la dirección no se puede recuperar utilizando el operador dirección de &durante el tiempo de ejecución del programa (consulte el uso de la semántica de movimiento ). La adición de semántica de movimiento complicó la taxonomía de clasificación de valores al agregarle el concepto de valor x (valor que expira) que se refiere a un objeto cerca del final de su vida útil cuyos recursos se pueden reutilizar (generalmente moviéndolos). Esto también conduce a la creación de las categorías glvalue (lvalue generalizado) que son lvalues ​​y xvalues ​​y prvalues ​​(rvalues ​​puros) que son rvalues ​​que no son xvalues. [6]

Este tipo de referencia se puede aplicar a todos los valores r, incluidos los valores distintos de l y los valores l. Algunos procesadores proporcionan una o más instrucciones que toman un valor inmediato , a veces denominado "inmediato" para abreviar. Un valor inmediato se almacena como parte de la instrucción que lo emplea, generalmente para cargar, sumar o restar un registro. Las otras partes de la instrucción son el código de operación y el destino. Esto último puede estar implícito. (Un valor no inmediato puede residir en un registro o almacenarse en otro lugar de la memoria, lo que requiere que la instrucción contenga una dirección directa o indirecta [por ejemplo, dirección de registro de índice] al valor).

La expresión del valor l designa (se refiere a) un objeto. Un valor l no modificable es direccionable, pero no asignable. Un valor l modificable permite cambiar y examinar el objeto designado. Un valor r es cualquier expresión, un valor que no es l es cualquier expresión que no es un valor l. Un ejemplo es un "valor inmediato" (ver arriba) y, en consecuencia, no direccionable.

En lenguaje ensamblador

Un valor puede ser prácticamente cualquier tipo de datos de un tipo de datos determinado , por ejemplo, una cadena, un dígito o una sola letra.

Los procesadores a menudo admiten más de un tamaño de datos inmediatos, por ejemplo, 8 o 16 bits, empleando un código de operación y una mnemónica únicos para cada variante de instrucción. Si un programador proporciona un valor de datos que no encaja, el ensamblador emite un mensaje de error "Fuera de rango". La mayoría de los ensambladores permiten expresar un valor inmediato como datos ASCII , decimal , hexadecimal , octal o binario . Por tanto, el carácter ASCII 'A'es lo mismo que 65o 0x41. El orden de bytes de las cadenas puede diferir entre procesadores, según el ensamblador y la arquitectura de la computadora.

Notas

  1. ^ Mitchell 1996, pág. 9.
  2. ^ Ah, Alfred V.; Lam, Mónica S.; Sethi, Ravi; Ullman, Jeffrey D. (1986). Compiladores: principios, técnicas y herramientas . ISBN 0-201-10088-6.
  3. ^ Mitchell 1996, págs. 389–390.
  4. ^ "ISO/IEC 14882:2017 Lenguajes de programación - C++". 2017.
  5. ^ "Valores L y valores R (Visual C++)". Red de desarrolladores de Microsoft . Consultado el 3 de septiembre de 2016 .
  6. ^ William M. Miller. "Una taxonomía de categorías de valores de expresión" (PDF) .

Referencias

enlaces externos