Transparencia referencial

La transparencia referencial es una característica de las partes de los programas informáticos. Una parte de un programa se llama "referencialmente transparente" si puede ser sustituida por el valor que devuelve sin cambiar el comportamiento del programa. Una función transparente desde el punto de vista de la referencia debe ser pura: siempre debe dar la misma salida si toma la misma entrada, y no debe tener efectos secundarios, es decir, partes del programa que realicen una acción distinta a la de devolver un valor. Lo contrario de la transparencia referencial es la opacidad referencial.

En matemáticas, todas las funciones son transparentes desde el punto de vista de la referencia, ya que una función matemática sólo puede recibir valores y escupir un valor. En programación, esto no siempre es cierto: una función también puede averiguar qué día del año es, o imprimir un mensaje en la pantalla. Debido a esta diferencia, algunas personas utilizan otros nombres para las funciones en programación, como procedimientos.

La transparencia referencial permite a los programadores y compiladores pensar en el código como un sistema de reescritura: algo que toma una expresión y la sustituye por otra. Esto puede ayudar en varias tareas, como por ejemplo:

  • Demostrar que el programa o el código es correcto, que hace exactamente lo que se supone que debe hacer, pase lo que pase.
  • Hacer un algoritmo más sencillo.
  • Facilitando la modificación del código, pero con la seguridad de que hace lo que se supone que debe hacer.
  • Hacer que el código se ejecute más rápido o de forma que consuma menos memoria.

Hay varias formas de realizar esta última tarea: las más conocidas son la memoización (guardar las respuestas después de la primera vez), la eliminación de subexpresiones comunes (averiguar si vale la pena combinar dos partes del código que son iguales), la evaluación perezosa (no encontrar la respuesta hasta que el código realmente la necesite) y la paralelización (trabajar en varios problemas al mismo tiempo).

Preguntas y respuestas

P: ¿Qué es la transparencia referencial?


R: La transparencia referencial es una característica de las partes de los programas informáticos por la que se puede sustituir una parte del programa por el valor que devuelve sin cambiar el comportamiento del programa.

P: ¿Qué es lo contrario de la transparencia referencial?


R: Lo contrario de la transparencia referencial es la opacidad referencial.

P: ¿Son todas las funciones en matemáticas referencialmente transparentes?


R: Sí, todas las funciones en matemáticas son referencialmente transparentes porque una función matemática sólo puede recibir valores y escupir un valor.

P: ¿Cómo ayuda la transparencia referencial a los programadores y compiladores?


R: La transparencia referencial permite a los programadores y compiladores pensar en el código como un sistema de reescritura: algo que toma una expresión y la sustituye por otra cosa. Esto ayuda en tareas como demostrar que el programa o el código son correctos, simplificar un algoritmo, facilitar el cambio de código sin dejar de estar seguro de que hace lo que se supone que debe hacer, y hacer que el código se ejecute más rápido o utilice menos memoria.

P: ¿Cuáles son algunas de las técnicas utilizadas para hacer que el código se ejecute más rápido o utilice menos memoria?


R: Algunas técnicas utilizadas para hacer que el código se ejecute más rápido o utilice menos memoria incluyen la memoización (guardar las respuestas después de la primera vez), la eliminación de subexpresiones comunes (averiguar si merece la pena combinar dos partes del código que son iguales) , la evaluación perezosa (no encontrar la respuesta hasta que el código realmente la necesite) y la paralelización (trabajar en varios problemas al mismo tiempo).

P: ¿Hay alguna diferencia entre las funciones de la programación y las de las matemáticas?


R:Sí, existe una diferencia entre las funciones en programación comparadas con las de matemáticas -En programación, una función también puede averiguar qué día del año es o imprimir un mensaje en pantalla, mientras que esto no es posible con las funciones matemáticas.

AlegsaOnline.com - 2020 / 2023 - License CC3