Wertnamen
Ein Bezeichner kann als Name für einen Wert eines Datentyps vereinbart werden. Die Bindung des Bezeichners an der Wert gilt innerhalb eines bestimmten Gültigkeitsbereichs oder Namenraums. Der so definierte Bezeichner wird auch eine Konstante genannt.
Eine Konstante kann man sich wie ein Etikett für einen bestimmten Wert vorstellen. So könnte der Bezeichner "zwoelf" beispielsweise als Name für den Wert "12" definiert werden.
Ein Namen als Etikett für einen Wert
_____
.-' '-.
.' # ## '.
/ ## # # \
; .-----------. ;
| | zwoelf | |
; '-----------' ;
\ # # /
'. ### ######.'
'-._____.-'
Oft werden Konstanten mit Literalen verwechselt. Der Unterschied zwischen beiden besteht darin, daß der Wert eines Literals bereits durch seine formale Sprache für alle Teile eines Textes festgelegt ist, während der Wert einer Konstante durch einen Text der formalen Sprache (bzw. den Autor dieses Textes) für einen bestimmten Gültigkeitsbereich festgelegt wird. In vielen formalen Sprachen ist beispielsweise der Wert des Numerals "12" unabänderlich durch die Sprache festgelegt, während der Wert des Bezeichners "zwoelf" durch einen Text definiert werden kann.
Der Name eines Wertes kann willkürlich festgelegt werden und wird von der formalen Sprache nicht weiter interpretiert. Daher kann auch der Bezeichner "zehn" für den Wert "12" verwendet werden, obwohl das irreführend ist.
Es kann auch mehrere Namen für den gleichen Wert geben. So können sowohl der Bezeichner "zwoelf" als auch der Bezeichner "dutzend" für den Wert "12" definiert werden.
Mehrere Namen fuer einen Wert
_____
.-' '-.
.' # ## '.
/ .---------. \
; | zwoelf | ;
| '---------' |
; .---------. ;
\ | dutzend | /
'.'---------'.'
'-._____.-'
Eine Konstante kann als Kombination eines Bezeichners mit einem bestimmten Wert aufgefaßt werden.
Konstante [UML, static structure diagram]
.-----------. .------------.
| Konstante | 1 | Bezeichner |
| |--------------| |
| | | |
| | '------------'
| | .------------.
| | * 1 | Wert |
| |--------------| |
| | | |
'-----------' '------------'
Bei der Definition einer Konstanten wird die Verbindung zwischen einem Bezeichner und einem Wert hergestellt. Manchmal kann auch noch ein Datentyp für die Konstante festgelegt werden, ansonsten hat die Konstante den Datentyp des angegebenen Wertes.
Bei der Verwendung steht der Bezeichner für den Wert, als den er definiert wurde und wird auch selber als die Konstante bezeichnet. Eine Konstante kann überall in einem Ausdruck verwendet werden, wo auch ein Literal oder ein anderer Ausdruck des gleichen Typs erlaubt wäre.
Durch die Wahl der Benennung eines Wertes mit einer Konstantendefinition kann der Sinn (die Bedeutung) des Wertes für den Leser eines Textes mit einer verständlichen Bezeichnung so beschrieben werden, daß dieser Leser den Sinn des Wertes bereits am Namen der Konstanten ablesen kann, ohne daß erst ein größerer Teil des Textes gelesen und verstanden werden muß.
Aber auch bei einem gut gewählten Namen, kann es einmal nötig werden, bei der Überarbeitung eines Quelltextes mit einer Konstanten, die Verwendungen der Konstanten im Quelltext zu überblicken. Das ist offenbar leichter, wenn der Textbereich, in dem die Konstante verwendet wird, nur klein ist.
In vielen Programmiersprachen kann für die Bindung eines Bezeichners an einen Wert ein Gültigkeitsbereich (scope ), also ein bestimmter Teil des Quelltextes, festgelegt werden. Die Definition zur Erzeugung der Bindung dieses Bezeichners an einen Wert und auch alle Verwendungen dieses Bezeichners mit dieser Bindung liegen dann innerhalb dieses Gültigkeitsbereichs. Außerhalb dieses Gültigkeitsbereichs könnte der Bezeichner eine andere oder gar keine Bedeutung haben. Dadurch ist dann sofort erkennbar, daß die Konstante mit der gegebenen Bindung nur in diesem Gültigkeitsbereich verwendet wird. Dieser Gültigkeitsbereich einer Konstanten sollte so klein wie möglich festgelegt werden, damit er möglichst leicht überblickt werden kann. Man sagt auch: Bezeichner sollten so lokal wie möglich definiert werden. Gleichzeitig werden so Namenskollisionen eher vermieden.
Wenn eine Konstante allerdings wirklich in einem größeren Text benötigt und verwendet wird, dann ist es auch angemessen, sie für diesen gesamten Text zu definieren. Dann kann der Name aber auch länger und beschreibungskräftiger sein, weil seine Bedeutung (Definition) bei einem großen Gültigkeitsbereich nicht so einfach gefunden werden kann und beim möglichen Vorkommen vieler Konstanten in einem großen Gültigkeitsbereich, die Abgrenzung von anderen Bezeichnern wichtiger sind. Eine Ausnahme von dieser Regel sind natürlich weithin bekannte Namen, wie der Name "pi", wenn sie auch wie zu erwarten verwendet werden. Konstanten mit einem kleinen Gültigkeitsbereich können auch schon einmal kürzere Namen haben, weil ihre Bedeutung leichter dem kleinen Gültigkeitsbereichs entnommen werden kann.
Daß ein Bezeichner nur einmal an einen Wert gebunden werden kann, gilt nur innerhalb eines bestimmten Gültigkeitsbereichs. In einem anderen Gültigkeitsbereich kann derselbe Bezeichner dann wieder an einen anderen Wert gebunden werden. Insofern ähneln Gültigkeitsbereiche den Namensräumen.
Auch in der Mathematik ist es üblich, bestimmten Werten einen Namen zu geben, wie etwa im Falle der Kreiszahl "π" und die Eulersche Zahl "e". Hierbei handelt es sich also um mathematische Konstanten.
π ≈ 3.1415926535897932384626433832795028841972
e ≈ 2.7182818284590452353602874713526624977572
Speicherplatzbedarf
Für eine Konstante muß nicht unter allen Umständen zur Laufzeit Speicherplatz verwendet werden. In bestimmten Fällen, kann ein Compiler sich den Wert der Konstante merken und bei Bedarf anstelle der Konstante in Ausdrücke einsetzen. Wenn der sich so ergebende Ausdruck dann während der Übersetzung ausgewertet werden kann, wird zur Laufzeit überhaupt kein Speicherplatz für die Konstante benötigt. Hat die Konstante "i" beispielsweise den Wert "2", dann kann der Compiler für den Ausdruck "2 * i" gleich den Wert "4" ermitteln und verwenden. Kann ein Ausdruck mit einer Konstante nicht während der Übersetzung ausgewertet werden, aber ist die Konstante durch den Quelltext bestimmt, dann wird der Wert dieser Konstante irgendwie im Programm gespeichert werden müssen und bewirkt so eine, meist geringfügige, Vergrößerung des Programms. Wird der Wert einer Konstante erst zur Laufzeit bestimmt, dann wird während einer Programmausführung innerhalb der Lebenszeit dieser Konstante Speicherplatz für sie benötigt.
Benennung
Allgemein sollte eine Konstante nach der Bedeutung ihres Wert benannt werden.
Ein Konstante für einen Wahrheitswert kann nach einer Aussage benannt werden, deren Wahrheitswert sie beinhaltet ("ist_rot", "hat_farbe", "kann_laufen").