Ich habe die Begriffe oft gesehen immutable
und const
synonym verwendet. Nach meiner (geringen) Erfahrung unterscheiden sich die beiden jedoch stark in dem Vertrag, den sie im Code schließen:
Unveränderlich macht der Vertrag, dass sich dieses Objekt überhaupt nicht ändert (zB Python-Tupel, Java-Strings).
Const schließt den Vertrag, dass im Gültigkeitsbereich dieser Variablen keine Änderungen vorgenommen werden (keine Zusicherung darüber, was andere Threads für das Objekt tun könnten, auf das in diesem Zeitraum verwiesen wird, z. B. das Schlüsselwort C / C ++).
Offensichtlich sind die beiden nicht gleichwertig, es sei denn, die Sprache ist ein Singlethread (PHP) oder sie verfügt über ein lineares oder eindeutiges Typisierungssystem (Clean, Mercury, ATS).
Erstens, ist mein Verständnis dieser beiden Konzepte korrekt?
Zweitens, wenn es einen Unterschied gibt, warum werden sie fast ausschließlich austauschbar verwendet?
const
gibt es nicht in jeder Sprache und Veränderlichkeit und Unveränderlichkeit gibt es nicht in jeder Sprache, so dass diese Sprache nicht agonistisch ist. Es ist nur sprachspezifisch , wo diese Konzepte zutreffen.