Transparencia referencial


Transparencia referencial

La transparencia referencial es un término utilizado en la programación funcional que se refiere a la propiedad por la cual "una expresión E del lenguaje es sustituida por el valor V, y V es el resultado de evaluar E, es decir, la semántica del programa no se altera".

En otras palabras, el resultado de evaluar una expresión compuesta depende únicamente del resultado de evaluar las subexpresiones que la componen y de nada más; no depende de la historia del programa en ejecución ni del orden de evaluación de las subexpresiones que la componen.

Esta propiedad no se da en lenguajes imperativos, donde abundan los efectos laterales por asignaciones destructivas. Por ejemplo, en esta clase escrita en lenguaje Java:

class Clase{
    static int m = 1;
    static int dame() { m++; return m-1;}
    static int hola() { return dame();}
    static int a1()   { return m + dame();}
    static int a2()   { return dame() + m;}
}

No podemos sustituir dame() por su valor, en el método hola(), pues suprimiríamos el efecto lateral de incremento dando un programa diferente al original. La sustitución de una expresión por su valor genera un programa diferente.

Como ya se ha dicho, otra complicación de los lenguajes sin transparencia referencial es que dificultan el razonamiento ecuacional: los métodos a1(),a2() no devuelven los mismos resultados con un mismo valor inicial de m. Por ejemplo: para m=0, a1() devolverá 0 la primera vez que se ejecute, mientras que a2() devolverá 1 la primera vez que se ejecute.


La transparencia referencial es muy útil a la hora de modificar un programa, ya que no tenemos que preocuparnos de que las modificaciones que hagamos en una parte del mismo afecten los cálculos que se hacen en otras. También es muy poderosa a la hora de verificar un programa (demostrar matemáticamente que cumple la especificación), ya que podemos utilizar propiedades ya demostradas de todas las subexpresiones que constituyen una expresión y que son válidas en cualquier contexto.


Wikimedia foundation. 2010.

Mira otros diccionarios:

  • Efecto secundario (informática) — Saltar a navegación, búsqueda En ciencias de la computación se dice que una función o expresión tiene efecto colateral o efecto secundario si esta, además de retornar un valor, modifica el estado de su entorno. Por ejemplo, una función puede… …   Wikipedia Español

  • Programación funcional — Diagrama del funcionamiento de una subrutina. En ciencias de la computación, la programación funcional es un paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado.… …   Wikipedia Español

  • Programación declarativa — La Programación Declarativa, en contraposición a la programación imperativa es un paradigma de programación que está basado en el desarrollo de programas especificando o declarando un conjunto de condiciones, proposiciones, afirmaciones,… …   Wikipedia Español

  • Variable global — Una variable global es, en informática, una variable accesible en todos los ámbitos de un programa informático. Los mecanismos de interacción con variables globales se denominan mecanismos de entorno global. El concepto de entorno global… …   Wikipedia Español

  • Anexo:Estaciones de Metrobús de la Ciudad de México — Las siguientes son tablas con todas las estaciones del Metrobús de la Ciudad de México ordenadas en forma alfabética y por línea. Contenido 1 Línea 1 2 Línea 2 3 Línea 3 4 Referencias …   Wikipedia Español

  • Sistema administrador de bases de datos relacionales — Saltar a navegación, búsqueda Un RDBMS es un Sistema Administrador de Bases de Datos Relacionales. RDBMS viene del acrónimo en inglés Relational Data Base Management System. Los RDBMS proporcionan el ambiente adecuado para gestionar una base de… …   Wikipedia Español

  • Sistema de gestión de bases de datos relacionales — Un sistema de gestión de bases de datos relacionales es aquel que sigue el modelo relacional. Contenido 1 Reglas de Codd 1.1 Regla 0: debe ser relacional, una base de datos y un sistema de gestión 1.2 Regla 1: regla de la inf …   Wikipedia Español

  • Estaciones de Metrobús de la Ciudad de México — Anexo:Estaciones de Metrobús de la Ciudad de México Saltar a navegación, búsqueda La siguiente es una tabla con todas las estaciones del Metrobús de la Ciudad de México ordenadas en forma alfabética Estación Líneas Anterior Siguiente Inauguración …   Wikipedia Español

  • Agua potable y saneamiento en Paraguay — Paraguay: Agua y Saneamiento Datos Cobertura del agua potable (definición amplia) 86% Cobertura del saneamiento (definición amplia) 80% Continuidad de servici …   Wikipedia Español

  • Universidad Nacional Mayor de San Marcos — Universidad Nacional Mayor de San Marcos …   Wikipedia Español