Home

Wertsemantik

Wertsemantik bezeichnet in der Informatik die Semantik von Programmiersprachen, bei der Ausdrücke eindeutig Werte statt Speicheradressen oder Referenzen liefern. In einer Sprache mit Wertsemantik entspricht eine Auswertung dem Erzeugen eines neuen, isolierten Wertes; Zuweisungen ersetzen den alten Wert durch einen neuen, oft durch Kopie oder durch Übertragung des Besitzes. Mutationen betreffen in der Regel nur bereits vorhandene Werte, nicht fremde Aliase.

Im Gegensatz dazu steht die Referenzsemantik (Referenzsemantik): Variablen verweisen auf Speicherorte oder Objekte, und mehrere Namen

Auswirkungen: Werte können ohne Seiteneffekte kopiert werden; Aliasing tritt nicht auf, was das Verstehen von Programmen

Praktische Beispiele: In C++ ist der grundlegende Typ oft mit Wertsemantik; Klassen können Wert- oder Referenzsemantik

Relevanz: Die Wahl der Wert- oder Referenzsemantik beeinflusst Vorhersehbarkeit, Nebenläufigkeit, Optimierung und API-Design. Die Begriffe werden

können
auf
dasselbe
Objekt
zeigen;
Mutationen
über
ein
Referenzobjekt
werden
von
allen
Referenzen
gesehen.
erleichtert.
Allerdings
kann
Kopieraufwand
Kosten
verursachen
und
tiefe
Kopien
nötig
machen.
In
Sprachen
mit
unveränderlichen
Werten
(functional
languages)
herrscht
eine
starke
Form
der
Wertsemantik,
da
Daten
nach
ihrer
Erzeugung
nicht
verändert
werden
können.
über
Copy-
bzw.
Move-Konstruktoren
definieren.
Python
verwendet
im
Wesentlichen
Referenzsemantik,
auch
wenn
primitive
Typen
wie
int
oder
str
effektiv
wertbasiert
sind.
Java
hat
Primärwerte
für
primitive
Typen,
Objekte
nutzen
Referenzen;
Rust
setzt
auf
Besitz-
und
Bewegungsemantik,
eine
Mischform,
die
Wert-
und
Referenzeigenschaften
verbindet.
häufig
in
der
Programmiersprachenforschung
und
beim
Design
von
Bibliotheken
verwendet,
um
zu
beschreiben,
wie
Daten
weitergegeben,
kopiert
und
mutiert
werden.