stringtranslate.com

Indirección

En programación de computadoras , la dirección indirecta (también llamada desreferenciación ) es la capacidad de hacer referencia a algo usando un nombre, referencia o contenedor en lugar del valor en sí. La forma más común de indirección es el acto de manipular un valor a través de su dirección de memoria . Por ejemplo, acceder a una variable mediante el uso de un puntero . Un puntero almacenado que existe para proporcionar una referencia a un objeto mediante doble indirección se denomina nodo de indirección . En algunas arquitecturas informáticas más antiguas, las palabras indirectas admitían una variedad de modos de direccionamiento más o menos complicados .

Otro ejemplo importante es el sistema de nombres de dominio que permite utilizar nombres como en.wikipedia.orgen lugar de direcciones de red como 208.80.154.224. La desviación de nombres legibles por humanos a direcciones de red significa que las referencias a una página web se vuelven más memorables y los enlaces no necesitan cambiar cuando un sitio web se reubica en un servidor diferente.

Descripción general

Un famoso aforismo de Butler Lampson dice: "Todos los problemas en informática pueden resolverse mediante otro nivel de indirección" (el " teorema fundamental de la ingeniería de software "). [1] Esto a menudo se cita erróneamente deliberadamente con " capa de abstracción " sustituida por "nivel de direccionamiento indirecto". Un corolario de esto que se cita a menudo es: "... excepto por el problema de demasiadas capas de indirección".

Un memorando humorístico de Internet , RFC  1925, insiste en que:

(6) Es más fácil mover un problema (por ejemplo, moviéndolo a una parte diferente de la arquitectura general de la red ) que resolverlo.

(6a) (corolario). Siempre es posible agregar otro nivel de indirección.

La programación orientada a objetos hace uso extensivo de la dirección indirecta, siendo un ejemplo sencillo el envío dinámico . Ejemplos de indirección de nivel superior son los patrones de diseño del proxy y del servidor proxy . La delegación es otro ejemplo clásico de patrón de indirección. En lenguajes interpretados fuertemente tipados con tipos de datos dinámicos , la mayoría de las referencias a variables requieren un nivel de direccionamiento indirecto: primero se verifica la seguridad del tipo de variable y luego se desreferencia el puntero al valor real y se actúa sobre él.

Los tipos de datos recursivos generalmente se implementan utilizando la dirección indirecta, porque de lo contrario, si un valor de un tipo de datos puede contener la totalidad de otro valor del mismo tipo de datos, no hay límite para el tamaño que podría necesitar un valor de este tipo de datos.

Al realizar programación simbólica a partir de una especificación matemática formal, el uso de la dirección indirecta puede resultar muy útil. Para comenzar con un ejemplo simple, las variables x , y y z en una ecuación como pueden referirse a cualquier número. Se podrían imaginar objetos para varios números y luego x , y y z podrían señalar los números específicos que se utilizan para un problema particular. El ejemplo simple tiene su limitación ya que hay infinitos números reales. En varias otras partes de la programación simbólica hay una cantidad limitada de símbolos. Entonces, para pasar a un ejemplo más significativo, en lógica la fórmula α puede referirse a cualquier fórmula, por lo que podría ser β , γ , δ , ... o ηπ , ςσ , ... Cuando el constructor de conjuntos Cuando se emplea notación, la declaración Δ={ α } significa el conjunto de todas las fórmulas, por lo que, aunque la referencia es a α , aquí hay dos niveles de direccionamiento indirecto, el primero al conjunto de todas las α y luego el segundo a una fórmula específica para cada una. aparición de α en el conjunto Δ.

Ver también

Referencias

  1. ^ Spinellis, Diomidis (2007). "Otro nivel de indirección". En Oram, Andy; Wilson, Greg (eds.). Hermoso código: los programadores líderes explican cómo piensan. Sebastopol, California: O'Reilly y asociados. págs. 279–291.