Hello,
Irgendwann mache ich mich noch unbeliebt, wenn ich ständig die Begrifflichkeiten sortiere ...
Ooch, im Moment ist ein bisschen Denksport ganz hilfreich, um wieder fit zu werden. Die Grippe will einfach nicht zu Ende gehen :-(
Wäre sonst auch beängstigend, wenn Literale in Variablen sofort ausgeführt würden.
Sicher nur eine unbedachte Formulierung deinerseits,
Wahrscheinlich. Unter Literal verstehe ich die menschlich lesbare Darstellung eines Wertes, die meistens abhängig von der verwendeten (Programmier-)Sprache ist.
aber ein Literal ist die Darstellung eines Wertes mit Hilfe von Code. In einer Variable steht eine für die interne Verarbeitung günstige Form des Wertes, aber üblicherweise kein Literal.
Naja, das ist jetzt wirklich Philosophie. Das Literal A meint i.d.R. schon das Zeichen A, es sei denn ...
Das Literal der Zahl 42 sind die Zeichen für die Ziffern 4 und 2 hintereinandergeschrieben. In einer (Integer-)Variable steht irgendeine Binärdarstellung der Zahl.
Klar, und was käme heraus, wenn man '42' oder 42 oder 000101010 ausführen lassen wollte? ;-P
In diesem Falle (bei Verwendung als Funktionsname) steht ja in der Variablen wieder nur ein Name, keine Adresse für den Code-Pointer. Dieser Name wird für die Ausführung wieder als Literal (im speziellen Kontext) verwendet, um den passenden Punkt in der Symbol-Tabelle zu finden.
Das war ja mein Denkfehler. Erst durch die Klammern wird der enthaltene Wert zum Symbol.
Ein Literal der Zeichenfolge foo"bar wäre "foo"bar". Der \ und die umschließenden Anführungszeichen sind nur Bestandteil des Literals, damit der Code, in dem es steht, korrekt geparst werden kann. Wenn die mit dem Literal gemeinte Zeichenfolge in einer Variable steht, sind die zusätzlichen Zeichen bestenfalls überflüssig.
Ich werde wohl noch ein Weilchen darüber grübeln und die durchaus sehr abweichenden Begriffsbestimmungen einschlägiger Literatur darüber vergleichen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg