Was bedeutet "Monotonie" im Kontext der Veränderlichkeit?

8

Ich lese die Programmiersprache The Rust und habe folgende Passage gefunden:

Denken Sie daran, dass das Schreiben in eine Struktur keine atomare Operation ist und viele Funktionen wie vec.push()z. B. intern neu zugewiesen werden können und unsicheres Verhalten verursachen können, sodass selbst Monotonie möglicherweise nicht ausreicht, um dies zu rechtfertigen UnsafeCell

Es tauchte einfach aus dem Nichts in dem Buch auf und ich hatte es online schwer herauszufinden, was es in diesem Zusammenhang genau bedeutet. Zu viele Informationen beziehen sich auf das Konzept der "Monotonie" mathematischer Funktionen, das ich bereits kannte, aber anscheinend nicht sehr hilfreich ist.

Ich schien nur diesen Artikel zu finden , der darüber spricht.

Neben der offensichtlichen Achtung der Gleichheit schließe ich jetzt auch die Bestimmung ein, dass ein Funktionsprogramm die Monotonie der Beobachtungen respektieren muss. Was meine ich damit? Es muss sein, dass, sobald Sie etwas zu einem bestimmten Zeitpunkt beobachtet haben, dies in Zukunft nicht aufhören wird, offensichtlich zu sein. Dies ist analog zur Monotonieeigenschaft in der Kripke- oder Beth-Semantik.

Dies ist jedoch auch ziemlich abstrakt und ich bin mir nicht sicher, ob es sich auch um dasselbe handelt.

xji
quelle

Antworten:

5

Der Autor scheint das gleiche (allgemeine) Konzept der "Monotonie" zu verwenden wie in der reinen Mathematik.

Wenn am Beispiel von a vectordie Größe einer bestimmten Instanz von vectormonoton ist, erscheint es vernünftig anzunehmen, dass der Speicherort eines zuvor pushbearbeiteten Elements nicht nachträglich geändert wird und es daher sicher ist, den Wert direkt zu ändern dieses Elements, ohne mit den vectornachfolgenden pushOperationen des Elements synchronisieren zu müssen .

Diese Annahme erscheint aus dem gleichen Grund vernünftig, weshalb es vernünftig erscheint anzunehmen, dass der Speicherort eines Elements, das zuvor auf einen (nicht kreisförmigen, Array-basierten, unbegrenzten) Stapel verschoben wurde, dessen Größe streng zunimmt, von einer Zukunft nicht beeinflusst wird pushBetrieb. Dies steht im Gegensatz zu einem Stapel, auf dem sowohl pushals auch popOperationen aufgerufen werden, und so kann der Speicherort eines zuvor geschobenen Elements durch eine popOperation "entfernt" werden und somit verfügbar sein, um erneut von a zugewiesen (dh modifiziert) zu werden anschließende pushOperation.

Der Autor meint, dass diese Annahme nicht korrekt ist, da selbst in einer Datenstruktur, deren Größe stark zunimmt, zukünftige Einfügungen zuvor eingefügte Elemente beeinflussen können, indem sie eine interne Neuzuweisung irgendeiner Art auslösen, die sich vom "logischen" Effekt der Einfügung unterscheidet .

Travis
quelle
OK. Scheint, als hätte ich darüber nachgedacht. Sieht so aus, als wäre es doch kein tiefes PL-Theorie-Zeug. Ratet mal, wie es plötzlich im Text ohne viel Kontext dargestellt wurde, hat mich falsch gerieben, haha.
xji