Qual é a palavra para uma operação que pode ser aplicada várias vezes e nunca muda de estado além do aplicativo inicial?

38

Estou tentando lembrar uma palavra, acho que está relacionada à teoria computacional ou de banco de dados. O sinônimo mais próximo é, atomicmas não é exatamente isso. Basicamente, é um tipo de computação que deve produzir o mesmo resultado, mesmo quando executado várias vezes seguidas, o que significa que não cria efeitos colaterais para si.

Eu encontrei essa palavra especificamente em uma resposta do Stack Overflow sobre um comando chmod (ou alguma outra operação relacionada à permissão).

Espero que seja o suficiente para continuar. Ficar bisbilhotando a Wikipedia não ajuda muito.

Mark Fox
fonte
5
Faz sentido especificar se você passa a mesma entrada para cada chamada de operação ou executa todas as próximas operações nos resultados da chamada anterior.
precisa saber é o seguinte
3
@ maxim1000 Concordado. A julgar pela variedade de respostas, ninguém tem certeza do significado do OP.
precisa
O problema aqui é que a questão no assunto não é estritamente a mesma que a questão no corpo. Eu respondi o assunto, mas, olhando de novo agora, tenho certeza de que não era isso que o pôster queria. Edita a pergunta e exclui a resposta
pdr 05/04
Você está perguntando sobre algo como uma solicitação GET (onde o mesmo resultado é retornado toda vez, não importa o quê), ou está perguntando sobre algo como o operador de atribuição (que tem efeito, mas repetir a mesma atribuição não muda nada) )?
Izkata

Respostas:

91

Você pode estar pensando em " Idempotente ".

Idempotência é propriedade de certas operações em matemática e ciência da computação, que podem ser aplicadas várias vezes sem alterar o resultado além da aplicação inicial.

Matthew King
fonte
16
Basicamente, fé idempotente IFF f(f(x)) == f(x)FORALL x.
Jörg W Mittag
11
Limitação interessante da descrição - A seção de discussão da página vinculada discute os botões do elevador. Deve haver milhares de comportamentos que podem ser descritos como "Idempotentes" não relacionados a Math ou Comp Sci.
mattnz
Pelo meu entendimento da questão, isso não é o que o OP está perguntando, pois ele não fala em aplicar o algoritmo nos resultados da primeira iteração, mas em reaplicá-lo nos mesmos dados de origem. Algo mais como se X = Y, então F (x) = f (y)
Joubarc
2
@Joubarc sim idempotent tem um significado um pouco mais flexível na computação do que o resto da matemática, portanto, está correto. pt.wikipedia.org/wiki/Idempotent#Computer_science_meaning
jk.
11
@Joubarc Isso significa apenas que é uma função. Operações que na mesma entrada podem agir de maneira diferente não podem ser chamadas de funções do ponto de vista matemático. Se na programação elas são chamadas de funções, as funções que de fato sempre dão a mesma saída para a mesma entrada são chamadas de purefunções ... Bem, meio que elas também precisam não ter nenhum efeito colateral.
Paul Stelian 09/11
12

A palavra geral é Idempotência, que se aplica aos computadores e à matemática. Não é a mesma coisa que Reentrant, que muitas vezes se confunde. Idempotência é exatamente o que você descreveu, o Reentrant é basicamente interrompível com a capacidade de entender exatamente de onde você parou.

Linguagens puramente funcionais como Haskell são construídas em torno do princípio de estar o mais próximo possível do Idempotent. As três primeiras letras do acrônimo ACID na Teoria de Banco de Dados são Idempotência aplicada a Bancos de Dados.

Engenheiro Mundial
fonte
10

Você pode estar procurando uma função pura .

Conforme definido no link, duas condições tornam uma função pura:

  1. A função sempre avalia o mesmo valor de resultado, dados os mesmos valores de argumento.
  2. A avaliação do resultado não causa nenhum efeito colateral ou saída semanticamente observável, como mutação de objetos mutáveis ​​ou saída para dispositivos de E / S.
Sebastien Julien
fonte
4
A pureza vai além da simples idempotência: uma função pura não pode ter nenhum efeito colateral, enquanto uma idempotente pode ter efeitos colaterais desde que não faça com que execuções subsequentes façam coisas diferentes. Por exemplo, uma função que usa variáveis ​​mutáveis ​​locais não é pura, mas provavelmente é idempotente. Você pode até escrever uma função que use variáveis globais e ainda seja idempotente, desde que você proteja essas globais para fazê-la reentrar.
tdammers
3
@tdammers Pureza e idempotência são completamente ortogonais: uma função pura não precisa ser idempotente e vice-versa. Por exemplo, f(x) := x + 1é puro, mas certamente não é idempotente.
Konrad Rudolph
0

Outra possibilidade é determinística .

Na ciência da computação, um algoritmo determinístico é um algoritmo que, dada uma entrada específica, sempre produzirá a mesma saída, com a máquina subjacente sempre passando pela mesma sequência de estados.

Graham Borland
fonte
11
isso foi apenas na resposta anterior excluída; O comentário que desafiou essa idéia foi: "Isso está errado. Por exemplo, o algoritmo que troca dois valores é perfeitamente determinístico, mas executá-lo duas vezes não produzirá o mesmo resultado que executá-lo uma vez".
mosquito
2
Não está claro se isso responde ou não à pergunta original, porque a pergunta original não está muito bem formulada, mas eu votei para cima nessa resposta porque a palavra determinística pode muito bem ser aquela que alguém estava procurando quando acabou Aqui.
Richard Whitehead
Se você alterar os valores de entrada antes da próxima execução, como você pode alegar que fornece à rotina os mesmos valores de argumento exatos ..?
Hein Haraldson Berg