Was ist der Unterschied zwischen Zuordnung, Bewertung und Namensbindung?

Antworten:

6

Das Binden hat damit zu tun, Dingen (oder Werten) in einem bestimmten, gut abgegrenzten Kontext Namen zu geben. Bei der Zuweisung geht es darum, Dinge (oder Werte) an einem Ort (einer Variablen) zu speichern. Eine andere Zuordnung kann einen vorherigen Wert durch einen neuen ersetzen. Die Bewertung besteht darin, alle Bezeichner eines formalen Textes mit etwas (mit einem Wert) zu verbinden. In der Mathematik werden diese Bezeichner häufig als Variablen bezeichnet, was zu einer Verwechslung mit dem Konzept der Variablen (dh der Speicherung) in der Informatik führt.

Der Versuch, intuitivere Details zu geben

Die Namensbindung gibt den Bezeichnern innerhalb eines Teils (Umfang genannt) des betreffenden mathematischen oder Programmiertextes eine Bedeutung. Diese Bedeutung kann in der Tat als Wert in einem Bereich angesehen werden, wenn der Text interpretiert wird.

Wenn Sie foobeispielsweise eine Ganzzahlvariable deklarieren , ist der im Bereich angehängte Wert fooeine Ganzzahlvariable. Eine Ganzzahlvariable kann informell als Container angezeigt werden, der einen Ganzzahlwert enthalten kann, der geändert werden kann. Sie können es auch als Adresse eines Speicherorts anzeigen, an dem der Inhalt gespeichert werden kann.

Wenn Sie jedoch fooals Ganzzahl 25 deklarieren, ist jede Verwendung von innerhalb des Gültigkeitsbereichs fooidentisch mit einer Verwendung von 25. Wenn Sie foo als Ganzzahlkonstante deklarieren, kann sie sich nicht ändern, und daher muss ihr Wert angegeben werden.

Beim Binden wird ein Name an einen Wert angehängt, der sich im Rahmen des Namens nicht ändert. Ein Beispiel sind Rechtsdokumente, aus denen hervorgeht, dass for the purpose of this document, Mr. Brown, and the Smith family shall be called the beneficiary.der Geltungsbereich das Rechtsdokument ist. Und überall im Dokument bedeutet die Verwendung des Wortes beneficiaryMr. Brown und die Familie Smith. Sie können es als Definition einer lokalen Terminologie sehen. Es hat damit zu tun, Dingen Namen zu geben. Beim Binden geht es um Sprechen, Lesen oder Schreiben. Es geht nicht darum, Werte auszuführen oder zu verschieben: Das entspricht einer Zuweisung.

Eine Variable kann als Speicherblock angesehen werden, der einen Wert enthalten kann. Wenn Sie eine Variable haben, können Sie den in dieser Variablen enthaltenen Wert durch eine Zuweisung ändern. Wenn fooeine Variable im aktuellen Bereich an eine Variable gebunden ist (oder diese bezeichnet), können Sie fooder Variablen, die mit bezeichnet wird foo, einen Wert zuweisen , dh der in dieser Variablen enthaltenen Wert, oder sie lesen. Und Sie können diesen Wert mit einer neuen Zuordnung ändern.

Bindung ist also eine Operation, die sagt, was Namen im Text des Programms oder des mathematischen Diskurses bedeuten. Es ist statisch in dem Sinne, dass sich der Text nicht ändert. Die Zuweisung ist jedoch ein Programmierkonzept, das darin besteht, einen Wert in einer Variablen zu speichern, dh in einem Container, der normalerweise ein Speicherplatz ist. Es ist ein dynamisches Konzept, das sich darauf bezieht, wie (Darstellungen von) Werten im Speicher gespeichert werden, das sich im Verlauf des Programms ändert.

Beachten Sie, dass eine Variable unabhängig von einem Namen existieren kann, an den sie gebunden werden könnte. Dies ist der Fall für ein Element eines Arrays, um ein einfaches Beispiel zu nennen.

In verschiedenen Kontexten kann man Ausdrücke oder Texte betrachten, die Namen verwenden, die nicht definiert wurden. Zum Beispiel können Sie schreiben (ein2- -b2)/.(ein- -b)Das ist ein arithmetischer Ausdruck. Anschließend können Sie die Variablen bewerten, indem Sie eine Umgebung (Sie können ungefähr einen Bereich lesen) mit den Variablen verknüpfenein und bsind an einige Werte gebunden, z. B. 3 und 12, und interessieren sich für den Wert, den die Expression annimmt. Eine Bewertung ist eine solche Zuordnung einer Reihe von Namen mit jeweils einem bestimmten Wert. Die Namensbewertung wird eher in der formalen Mathematik verwendet, während die Zuordnung ein Programmierkonzept ist.

babou
quelle
Zusammenfassend bestätigen Sie grundsätzlich, dass alle Operationen der Variablen / Kennung / dem Platzhalter einen Wert zuweisen. Der Unterschied ist der Kontext. Wenn wir Gast (Programm) Host (Maschine) zuordnen, sagen wir binding. Wenn die Variable während der Programmausführung an einen bestimmten Wert gebunden ist, sagen it was assignedwir dies lieber valuatedim formalen / cs-Kontext. Ich habe gerade angefangen, mir heute die freien / gebundenen Variablen anzusehen und war verwirrt. Es ist wie im formalen / cs-Kontext, aber es wird die Fachsprache Compiler / Computer-Ingenieur verwendet?
Val
2
@RecognizeEvilasWaste Ich habe versucht zu klären. Es gibt jedoch eine Schwierigkeit aufgrund der Tatsache, dass die mathematische Terminologie mit der Terminologie der Informatik in Konflikt steht. Eine Variable kann nicht an einen Wert gebunden werden, einer Variablen wird ein Wert zugewiesen. Ein Bezeichner ist an eine Bedeutung gebunden, aber der formale Begriff der Bedeutung ist ein Wert in einer Semantikdomäne. Sie weisen keine Bezeichner zu, Sie binden keine Variablen. Bezeichner sind Syntax, Sprache. Variablen sind Speicher, in denen Informationen gespeichert werden. Tatsächlich ist es Computerjargon, der aus der formalen Rede abgeleitet wurde.
Babou
2
Ihre Verwirrung ist verständlich. In der Lambda-Rechnung wird das Wort Variable für das verwendet, was ich als Bezeichner bezeichne. Im Allgemeinen gibt es einen ganzen Zweig der Programmierung, die als funktionale Programmierung bezeichnet wird und keine Zuweisung verwenden soll. Im Prinzip wird also alles durch Binden erledigt, aber es gibt einen ganz anderen Programmierstil. Der Lambda-Kalkül ist das grundlegende formale Beispiel dafür. Sie sprechen jedoch immer noch von Variablen für Bezeichner. Ihre Frage ist fair und die Terminologie ist chaotisch. Nun, ich habe mein Bestes gegeben.
Babou
@RecognizeEvilasWaste Ihre Frage ist eigentlich sehr gut. Ich hatte nicht bemerkt, wie viel Mehrdeutigkeit dies für Anfänger schafft.
Babou
Nicht nur für Anfänger. Ich würde sagen, dass ich in diesen Fragen ziemlich erfahren bin. Ich kann verstehen, was sie bedeuten. Aber ich habe immer Schwierigkeiten, welchen Begriff ich verwenden soll, wenn ich ähnliche Dinge sagen möchte. Ich mag es auch, die Beziehungen zwischen Dingen zu sehen, en.wikipedia.org/wiki/User:Javalenok Dies hilft beim Verständnis.
Val