fbpx
Wikipedia

Transparencia referencial

La transparencia referencial es un término utilizado en la programación funcional que se refiere a la propiedad por la cual "en un programa, una expresión E del lenguaje puede ser sustituida por otra de igual valor V, resultando en un programa cuya semántica no va a diferir de la del original".

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 colaterales 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 estado del programa diferente al original. La sustitución de una expresión por su valor genera un estado 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.

  • Datos: Q1754278


transparencia, referencial, transparencia, referencial, término, utilizado, programación, funcional, refiere, propiedad, cual, programa, expresión, lenguaje, puede, sustituida, otra, igual, valor, resultando, programa, cuya, semántica, diferir, original, otras. La transparencia referencial es un termino utilizado en la programacion funcional que se refiere a la propiedad por la cual en un programa una expresion E del lenguaje puede ser sustituida por otra de igual valor V resultando en un programa cuya semantica no va a diferir de la del original En otras palabras el resultado de evaluar una expresion compuesta depende unicamente del resultado de evaluar las subexpresiones que la componen y de nada mas no depende de la historia del programa en ejecucion ni del orden de evaluacion de las subexpresiones que la componen Esta propiedad no se da en lenguajes imperativos donde abundan los efectos colaterales 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 metodo hola pues suprimiriamos el efecto lateral de incremento dando un estado del programa diferente al original La sustitucion de una expresion por su valor genera un estado diferente Como ya se ha dicho otra complicacion de los lenguajes sin transparencia referencial es que dificultan el razonamiento ecuacional los metodos a1 a2 no devuelven los mismos resultados con un mismo valor inicial de m Por ejemplo para m 0 a1 devolvera 0 la primera vez que se ejecute mientras que a2 devolvera 1 la primera vez que se ejecute La transparencia referencial es muy util 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 calculos que se hacen en otras Tambien es muy poderosa a la hora de verificar un programa demostrar matematicamente que cumple la especificacion ya que podemos utilizar propiedades ya demostradas de todas las subexpresiones que constituyen una expresion y que son validas en cualquier contexto Datos Q1754278Obtenido de https es wikipedia org w index php title Transparencia referencial amp oldid 120649301, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos