Einführung in Festlegungen im Rahmen der Lehre des Programmierens. [] (Festlegung), Lektion, Seite 721265
http://www.purl.org/stefan_ram/pub/programmieren_abbildung_de ist die kanonische URI dieser Seite.
Stefan Ram

Festlegungen

Literale reichen nicht immer aus, um alles Gewünschte auch ausdrücken zu können.

Eine Festlegung  ist eine bestimmte Art der Kombination von Ausdrücken zu einem neuen Ausdruck.

Sie besteht aus der Angabe einer Gattung  und einer Bestimmung, die genauer festlegt, welches Individuum  einer Gattung mit der Festlegung gemeint ist.

Im Deutschen ist „die Biene Maja“ eine Festlegung mit der Gattung „Biene“ und der Bestimmung „Maja“. Durch Änderung der Gattung oder der Bestimmung ergibt sich eine andere Festlegung, wie die Festlegung „die Biene Otto“ oder die Festlegung „die Sängerin Maja“.

In formalen Sprachen ist die Festlegung das universelle Bauelement, das in mehr oder weniger verschiedenen Schreibweisen  eingesetzt wird. Die häufigste Schreibweise besteht aus der direkten Hintereinanderschreibung  von Gattung und Bestimmung, wobei die Bestimmung eingeklammert wird. So würde „die Biene Maja“ also als "Biene( Maja )" geschrieben werden.

Ein weiteres Beispiel einer Gattung ist die Gegenzahl, welche das Produkt einer Zahl mit −1 darstellt. So bezeichnet die Festlegung "Gegenzahl( 5 )" dann beispielsweise den Wert −5.

Die folgende Produktion gibt die Schreibweise einer Festlegung  an.

Festlegung 〉 ::=
Gattung 〉 "(" 〈Bestimmung 〉 ")".

Eine Festlegung besteht also aus einer Gattung, einer öffnenden runden Klammer, einer Bestimmung und einer schließenden runden Klammer. (Allerdings gibt es manchmal auch noch andere Schreibweisen.)

Die runden Klammern kennzeichnen eine Festlegung und ihre beiden Bestandteile. Sie werden auch als Operator  (Klammeroperator  oder Festlegungsoperator ) bezeichnet.

Bedeutungen

Manchmal will man sich mit zwei verschiedenen Festlegungen  auf das gleiche  beziehen. So soll die Festlegung "Gegenzahl( 5 )" sich möglicherweise auf dieselbe Zahl beziehen wie die Festlegung "Zahl( -5 )". Zwei Festlegungen sind gleich, wenn ihre Gattung und ihre Bestimmung beide einander gleich sind. Das ist bei der Festlegung "Gegenzahl( 5 )" und der Festlegung "Zahl( -5 )" nicht der Fall. Diese beiden Festlegungen sind also nicht gleich.

Um dennoch den Gedanken, daß beide Festlegungen sich auf dasselbe beziehen, ausdrücken zu können, ordnet man Festlegungen eine Bedeutung  zu. Das kann man sagen, die Bedeutung der Festlegung "Gegenzahl( 5 )" sei der Bedeutung der Festlegung "Zahl( -5 )" gleich.

Argumente

Die Bestimmung besteht oft aus den in den Klammern geschriebenen Argumenten. So hat die Festlegung "Gegenzahl( 5 )" das Argument "5". Es sind aber auch mehr oder weniger Argumente  möglich: Die Festlegung "Zufallszahl()" hat gar keine Argumente, während die Festlegung "Quotient( 6, 2 )" das Argument "6" und das Argument "2" hat und den Wert der Division von "6" durch "2" bedeuten soll. Beide Argumente in der gegebenen Reihenfolge bilden dann zusammen die Bestimmung der Festlegung.

Bei mehreren Argumenten ist die Reihenfolge der Argumente  im allgemeinen von Bedeutung, daher ist die Festlegung "Quotient( 6, 2 )" nicht der Festlegung "Quotient( 2, 6 )" gleich. Die Festlegung "Summe( 2, 3 )" ist auch nicht der Festlegung "Summe( 3, 2 )" gleich, aber beide haben die gleiche Bedeutung, nämlich 5 (wenn man unterstellt, daß mit der Gattung "Summe" Summe der Argumente bezeichnet wird).

Festlegungen in formalen Sprachen

Es zeigt sich, daß fast alle formalen Sprachen letztendlich nur oder fast nur aus Festlegungen bestehen. Dabei weicht aber die Schreibweise der vorkommenden Festlegungen in einigen Fällen von der Klammerschreibweise ab, um ein abwechslungsreicheres Äußeres zu erreichen, da sich das Auge an verschiedenen Schreibweisen oft besser orientieren kann, als in Fällen, in denen alles gleichartig aussieht.

Von der Bestimmung zur Bedeutung

Man sieht eine Gattung manchmal als eine Beziehung zwischen Bestimmung und Bedeutung an.

Eine Art als Assoziation [UML, static structure diagram]
.-------------. *       Gattung >       1 .-----------. 
| Bestimmung |---------------------------| Bedeutung | 
'-------------' '-----------'

Ein Spezialfall einer solchen Gattung ist die mathematische Abbildung, bei der die Bedeutung immer ein Wert  ist, der für eine bestimmte Abbildung durch die Bestimmung der Festlegung vollständig und eindeutig bestimmt ist, solange die Bestimmung zum sogenannten Definitionsbereich  der Abbildung gehören.

Eine mathematische Abbildung wird auch Funktion  genannt, die Funktionsschreibweise "f(x)" ist weithin bekannt. In dieser Lektion wurde aber für die Gattung "G" einer Festlegung "G(B)" nicht die Bezeichnung „Funktion“ verwendet, weil es Festlegungen gibt, deren Gattungen nicht unbedingt mathematische Funktionen sind, für die aber trotzdem die Schreibweise "G(B)" verwendet wird. Um die einzelnen Teil der Schreibweise "G(B)" trotzdem bezeichnen zu können, wurden hier die Bezeichnungen „Festlegung“, „Festlegungsoperator“, „Gattung“ und „Bestimmung“ eingeführt.

Verschiedene Begriffssysteme (Zeilen) für Festlegungen und ihre Teile
System       Ausdruck        Teil vor "("        Teil in "()"
Hier Festlegung Gattung Bestimmung 
Variante 1 Applikation Applikand (Applikatum) 
Variante 2 Anwendung das Angewendete 
Mathematik - Funktionszeichen Argumente 
Carnap - Funktor - 
Linguistik Determination Determinatum Determinans 
Linguistik Kern 
Linguistil (Grundausdruck) (Bestimmungsausdruck) 
C Funktion, Makro Argumente 
C++ Funktion, Funktor Argumente 
Java Methode Argumente 
Perl sub Argumente

Anmerkungen

Bemerkung   Zu den verwendeten Bezeichnungen
In verschiedenen formalen Sprachen wird etwas, das in einer Festlegung als Gattung verwendet werden kann, ganz unterschiedlich genannt und kann von ganz unterschiedlicher Art sein. In C++  kann man beispielsweise Funktionen, bestimmte Zeiger auf Funktionen  oder (in gewissem Sinne) bestimmte Objekte  als Gattung verwenden; in Java  hingegen Methoden, in Perl  Unterprogramme. In dieser Lektion sollte nicht willkürlich eine der in den verschiedenen Programmiersprachen üblichen Bezeichnungen herausgegriffen werden. Statt dessen wurde die allgemeine Bezeichnung  „Gattung“ gewählt, die gemäß ihrer Bedeutung alles umfaßt, das in dieser Rolle (vor der öffnenden runden Klammer in einer Festlegung) werden kann. Obwohl diese Bezeichnung in der Literatur nicht verbreitet ist, erlaubt sie es, allgemeine Aussagen über Festlegungen zu machen, ohne sich durch die Wahl einer spezielleren Bezeichnung nur auf eine bestimmte Programmiersprache zu beziehen. Die Bezeichnungen „Festlegung“, „Gattung“ und „Bestimmung“ sind somit etwas abstrakt  und außerhalb dieses Textes auch selten oder gar nicht gebräuchlich. Sie sind allerdings nicht ganz aus der Luft gegriffen sondern von vergleichbaren Bezeichnungen hergeleitet worden, die in der Linguistik verwendet werden.
Bemerkung   Falscher Gebrauch der Runden Klammern
Zum Notation einer Festlegung wird der Festlegungsoperator "()" verwendet. Das führt dazu, daß einige, wenn sie von Gattungen sprechen, stets die runden Klammern dahinter schreiben, um zu kennzeichnen, daß es sich um eine Gattung handelt. Sie sprechen also von der Gattung "a()". Das ist aber genau verkehrt, denn wenn man von der Gattung "a" selber sprechen will, dann verwendet man die runden Klammern gerade nicht. Die Schreibweise "a()" ist eine Festlegung  mit der Gattung "a", die Gattung selber  ist in diesem Fall "a". (Eine Ausnahme ist es, wenn der Typ von Argumenten in den Klammern zur Identifikation der Gattung nötig ist: Dann ist die Angabe dieses Typs in den Klammern hinter der Gattung nötig.)
Bemerkung   Varianten der Schreibweise
Einige Programmiersprachen verwenden auch andere Schreibweisen für Festlegungen. So wird die Gattung in LISP  mit in die runden Klammern  geschrieben, und zwar direkt hinter die linke Klammer: Eine Festlegung mit der Gattung "G" und der Bestimmung "B" wird also dort durch den Quelltext "(G B)" notiert.
In der Mathematik wird statt "f (x )" oft einfach auch nur "f x " geschrieben, wenn durch das Fehlen der Klammern keine Mißverständnisse möglich sind.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Von der Stefan-Ram-Startseite ausgehend finden sich oft noch mehr Informationen zu Themen, die auf einer Seite angesprochen wurden. (Eine Verbindung zur Stefan-Ram-Startseite befindet sich ganz oben auf dieser Seite.)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. slrprd, PbclevtugFgrsnaEnz