¿Cuál es la palabra para una operación que se puede aplicar varias veces y nunca cambiar de estado más allá de la aplicación inicial?


38

Estoy tratando de recordar una palabra, creo que está relacionada con la teoría computacional o de base de datos. El sinónimo más cercano es atomicpero no es exactamente eso. Básicamente es un tipo de cálculo que debería producir el mismo resultado incluso cuando se ejecuta varias veces seguidas, lo que significa que no crea efectos secundarios por sí mismo.

Me encontré específicamente con esta palabra en una respuesta de desbordamiento de pila sobre un comando chmod (o alguna otra operación relacionada con permisos).

Esperemos que sea suficiente para continuar. Hurgar en Wikipedia no es de mucha ayuda.


55
Tiene sentido especificar si pasa la misma entrada a cada llamada de operación o ejecuta cada operación siguiente en los resultados de la llamada anterior.
maxim1000

3
@ maxim1000 De acuerdo. A juzgar por la variedad de respuestas, nadie está seguro de a qué se refería el OP.
Ford

El problema aquí es que la pregunta en el tema no es estrictamente la misma que la pregunta en el cuerpo. Respondí el que estaba en el tema pero, mirando de nuevo ahora, estoy bastante seguro de que eso no era lo que quería el cartel. Edita la pregunta, elimina la respuesta
pdr

¿Está preguntando sobre algo como una solicitud GET (donde se devuelve el mismo resultado cada vez que pase lo que pase), o está preguntando sobre algo como el operador de asignación (que tiene un efecto, pero repetir la misma asignación no cambia nada )?
Izkata

Respuestas:


91

Quizás estés pensando en " Idempotente ".

La idempotencia es propiedad de ciertas operaciones en matemáticas y ciencias de la computación, que se pueden aplicar varias veces sin cambiar el resultado más allá de la aplicación inicial.


16
Básicamente, fes idempotente IFF f(f(x)) == f(x)FORALL x.
Jörg W Mittag

1
Limitación interesante de la descripción: la sección de discusión de la página vinculada analiza los botones del elevador. Debe haber miles de comportamientos que pueden describirse como "Idempotentes" no relacionados con Matemáticas o Ciencias de la Computación.
mattnz 05 de

Según tengo entendido la pregunta, eso no es en absoluto lo que pregunta el OP, ya que no habla de aplicar el algoritmo en los resultados de la primera iteración, sino de volver a aplicarlo en los mismos datos de origen. Algo más parecido si x = y, entonces F (x) = F (y)
Joubarc

2
@Joubarc sí, idempotente tiene un significado un poco más suelto en computación que el resto de las matemáticas, por lo tanto, es correcto. en.wikipedia.org/wiki/Idempotent#Computer_science_meaning
jk.

1
@Joubarc Eso solo significa que es una función. Las operaciones que en la misma entrada pueden actuar de manera diferente no pueden llamarse funciones desde un punto de vista matemático. Si en la programación se les llama funciones, las funciones que de hecho siempre dan la misma salida para la misma entrada se llaman purefunciones ... Bueno, un poco, tampoco tienen que tener ningún efecto secundario.
Paul Stelian

12

La palabra general es Idempotencia que se aplica tanto a las computadoras como a las matemáticas. No es lo mismo que Reentrant con el que a menudo se confunde. La idempotencia es precisamente lo que describiste, Reentrant es básicamente interrumpible con la capacidad de retomar exactamente donde lo dejaste.

Los lenguajes puramente funcionales como Haskell se basan en el principio de estar lo más cerca posible de Idempotent. Las primeras tres letras del acrónimo ACID en la Teoría de la base de datos son Idempotencia tal como se aplica a las Bases de datos.


10

Quizás estés buscando una función pura .

Como se define en el enlace, dos condiciones hacen que una función sea pura:

  1. La función siempre evalúa el mismo valor de resultado dados los mismos valores de argumento.
  2. La evaluación del resultado no causa ningún efecto secundario o salida semánticamente observable, como la mutación de objetos mutables o la salida a dispositivos de E / S.

44
La pureza va más allá de la simple idempotencia: una función pura no puede tener ningún efecto secundario en absoluto, mientras que una función idempotente puede tener efectos secundarios siempre que no provoque que las ejecuciones posteriores hagan cosas diferentes. Por ejemplo, una función que usa variables locales mutables no es pura, pero probablemente sea idempotente. Incluso podría escribir una función que use variables globales y que siga siendo idempotente, siempre y cuando se asegure de proteger a esos globales para que vuelva a entrar.
tdammers

3
@tdammers La pureza y la idempotencia son completamente ortogonales: una función pura no tiene que ser idempotente y viceversa. Por ejemplo, f(x) := x + 1es puro pero ciertamente no idempotente.
Konrad Rudolph el


0

Otra posibilidad es determinista .

En informática, un algoritmo determinista es un algoritmo que, dada una entrada particular, siempre producirá la misma salida, con la máquina subyacente pasando siempre por la misma secuencia de estados.


1
esto ha estado en la respuesta anterior recién eliminada; El comentario que desafió esta idea fue: "Esto está mal. Por ejemplo, el algoritmo que intercambia dos valores es perfectamente determinista, pero ejecutarlo dos veces no producirá el mismo resultado que ejecutarlo una vez".
mosquito el

2
No está claro si esto responde o no a la pregunta original, porque la pregunta original no está muy bien redactada, pero he votado esta respuesta porque la palabra determinista podría ser la que alguien estaba buscando cuando terminaron aquí.
Richard Whitehead

Si muta los valores de entrada antes de la próxima ejecución, ¿cómo puede afirmar que proporciona a la rutina los mismos valores exactos de argumento ...?
Hein Haraldson Berg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.