Was ist das Wort für eine Operation, die mehrmals angewendet werden kann und den Status nie über die ursprüngliche Anwendung hinaus ändert?

38

Ich versuche mich an ein Wort zu erinnern, ich denke es hängt mit der Computer- oder Datenbanktheorie zusammen. Das nächste Synonym ist, atomicaber das ist es nicht genau. Grundsätzlich handelt es sich um eine Art Berechnung, die das gleiche Ergebnis liefern sollte, auch wenn sie mehrmals hintereinander ausgeführt wird, was bedeutet, dass sie selbst keine Nebenwirkungen erzeugt.

Ich habe dieses Wort in einer Stack Overflow-Antwort über einen chmod-Befehl (oder eine andere berechtigungsbezogene Operation) konkret angesprochen.

Hoffentlich ist das genug, um weiterzumachen. Das Stöbern in Wikipedia ist keine große Hilfe.

Mark Fox
quelle
5
Es ist sinnvoll anzugeben, ob Sie bei jedem Aufruf der Operation dieselbe Eingabe übergeben oder bei den Ergebnissen des vorherigen Aufrufs jede nächste Operation ausführen.
maxim1000
3
@ maxim1000 Einverstanden. Gemessen an der Vielfalt der Antworten ist niemand sicher, was das OP bedeutete.
Ford
Das Problem hierbei ist, dass die Frage im Thema nicht genau der Frage im Körper entspricht. Ich beantwortete die Frage im Betreff, aber jetzt bin ich mir ziemlich sicher, dass das nicht das ist, was das Poster wollte. Bearbeitet die Frage, löscht die Antwort
pdr
Fragen Sie nach so etwas wie einer GET-Anforderung (bei der jedes Mal das gleiche Ergebnis zurückgegeben wird, egal was passiert), oder nach dem Zuweisungsoperator (der sich auswirkt, aber das Wiederholen derselben Zuweisung ändert nichts )?
Izkata

Antworten:

91

Du denkst vielleicht an " Idempotent ".

Idempotenz ist die Eigenschaft bestimmter Operationen in Mathematik und Informatik, dass sie mehrfach angewendet werden können, ohne das Ergebnis über die ursprüngliche Anwendung hinaus zu verändern.

Matthew King
quelle
16
Grundsätzlich fist IFF f(f(x)) == f(x)FORALL idempotent x.
Jörg W Mittag
1
Interessante Einschränkung der Beschreibung - Im Diskussionsteil der verlinkten Seite werden Aufzugsschaltflächen beschrieben. Es muss Tausende von Verhaltensweisen geben, die als "idempotent" bezeichnet werden können und nicht mit Mathematik oder Comp Sci zusammenhängen.
Mattnz
Nach meinem Verständnis der Frage ist das überhaupt nicht das, was das OP fragt, da er nicht davon spricht, den Algorithmus auf die Ergebnisse der ersten Iteration anzuwenden, sondern ihn erneut auf dieselben Quelldaten anzuwenden. Etwas ähnlicheres, wenn x = y, dann F (x) = F (y)
Joubarc
2
@Joubarc ja idempotent hat eine etwas lockerere Bedeutung beim Rechnen als der Rest der Mathematik, daher ist es richtig. en.wikipedia.org/wiki/Idempotent#Computer_science_meaning
jk.
1
@Joubarc Das heißt nur, es ist eine Funktion. Operationen, die auf dieselbe Eingabe unterschiedlich wirken können, können aus mathematischer Sicht nicht als Funktionen bezeichnet werden. Wenn sie beim Programmieren als Funktionen bezeichnet werden, werden die Funktionen, die tatsächlich immer die gleiche Ausgabe für die gleiche Eingabe liefern, als pureFunktionen bezeichnet.
Paul Stelian
12

Das allgemeine Wort ist Idempotence und gilt sowohl für Computer als auch für die Mathematik. Es ist nicht dasselbe wie Reentrant, mit dem es oft verwechselt wird. Idempotenz ist genau das, was Sie beschrieben haben. Reentrant ist grundsätzlich unterbrechbar, da Sie genau dort aufhören können, wo Sie aufgehört haben.

Rein funktionale Sprachen wie Haskell basieren auf dem Prinzip der größtmöglichen Nähe zu Idempotent. Die ersten drei Buchstaben des Akronyms ACID in der Datenbanktheorie lauten Idempotenz für Datenbanken.

Weltingenieur
quelle
10

Vielleicht suchen Sie eine reine Funktion .

Wie im Link definiert, machen zwei Bedingungen eine Funktion rein:

  1. Die Funktion wertet bei gleichen Argumentwerten immer den gleichen Ergebniswert aus.
  2. Die Auswertung des Ergebnisses verursacht keine semantisch beobachtbaren Nebenwirkungen oder Ausgaben, wie z. B. Mutationen von veränderlichen Objekten oder Ausgaben an E / A-Geräte.
Sebastien Julien
quelle
4
Reinheit geht über die bloße Idempotenz hinaus: Eine reine Funktion kann überhaupt keine Nebenwirkungen haben, während eine idempotente Funktion Nebenwirkungen haben kann, solange sie nicht dazu führt, dass nachfolgende Läufe verschiedene Dinge tun. Beispielsweise ist eine Funktion, die lokale veränderbare Variablen verwendet, nicht rein, aber wahrscheinlich idempotent. Sie können sogar eine Funktion schreiben, die globale Variablen verwendet und immer noch idempotent ist, solange Sie sicherstellen, dass diese globalen Variablen geschützt sind, damit sie wieder eintritt.
tdammers
3
@tdammers Reinheit und Idempotenz sind völlig orthogonal: Eine reine Funktion muss nicht idempotent sein und umgekehrt. Zum Beispiel f(x) := x + 1ist rein, aber sicherlich nicht idempotent.
Konrad Rudolph
0

Eine andere Möglichkeit ist deterministisch .

In der Informatik ist ein deterministischer Algorithmus ein Algorithmus, der bei einer bestimmten Eingabe immer dieselbe Ausgabe erzeugt, wobei die zugrunde liegende Maschine immer dieselbe Folge von Zuständen durchläuft.

Graham Borland
quelle
1
Dies wurde gerade in der vorherigen Antwort gelöscht; Ein Kommentar, der diese Idee in Frage stellte, lautete: "Das ist falsch. Beispielsweise ist der Algorithmus, der zwei Werte vertauscht, vollkommen deterministisch, aber wenn er zweimal ausgeführt wird, führt dies nicht zu dem gleichen Ergebnis wie ein einziges Mal."
Mücke
2
Es ist nicht klar, ob dies die ursprüngliche Frage beantwortet oder nicht, da die ursprüngliche Frage nicht sehr gut formuliert ist, aber ich habe diese Antwort positiv bewertet, weil das Wort deterministisch möglicherweise dasjenige ist, nach dem jemand gesucht hat, als sie gelandet sind Hier.
Richard Whitehead
Wenn Sie die Eingabewerte vor dem nächsten Durchlauf ändern, wie können Sie dann behaupten, dass Sie der Routine dieselben genauen Argumentwerte zur Verfügung stellen?
Hein Haraldson Berg