Formal bezeichnet ein Datentyp in der Informatik die Zusammenfassung von Objektmengen mit den darauf definierten Operationen. Dabei werden durch den Datentyp unter Verwendung einer so genannten Signatur ausschließlich die Namen dieser Objekt- und Operationsmengen spezifiziert. Ein so spezifierter Datentyp besitzt noch keine Semantik.
Die weitaus häufiger verwendete, aber speziellere Bedeutung des Begriffs Datentyp stammt aus dem Umfeld der Programmiersprachen und bezeichnet die Zusammenfassung konkreter Wertebereiche und darauf definierten Operationen zu einer Einheit. Zur Unterscheidung wird für diese Datentypen in der Literatur auch der Begriff Konkreter Datentyp verwendet. Für eine Diskussion, wie Programmiersprachen mit Datentypen umgehen, siehe Typisierung.
Der gedankliche Übergang von der formalen Definition zu der im Umfeld von Programmiersprachen verwendeten Definition konkreter Datentypen, geschieht dabei über die sukzessive Einführung einer Semantik zu den formal spezifizierten Namen der Objekt- und Operationsmengen. Die Konkretisierung der Operationsmenge führt zu Abstrakten Datentypen beziehungsweise Algebren. Mit der weiteren Konkretisierung der Objektmenge ergibt sich der Konkrete Datentyp.
Simple Integer Sorten int Operationen empty: -> int + : int x int -> int - : int x int -> int End Simple Integer
Dies ist eine Signatur für einen angenommenen Datentyp Simple Integer, auf dem nur zwei Operationen + und - (neben der "Erzeuger-Operation") erlaubt sind. Die einzige Sorte nennen wir int. Die Operation empty dient zur Erzeugung eines int-Elementes. Die Operationen + und - sind jeweils zweistellig und liefern jeweils wiederum ein Element der Sorte int. Wichtig ist, dass es sich hier um eine rein syntaktische Spezifikation handelt. Was ein int ist, wird nirgendwo definiert. Hierzu müsste noch eine Zuordnung des Sortennamens zu einer Menge erfolgen. Eine sinnvolle Zuordnung wäre in diesem Fall etwa die Menge der natürlichen Zahlen. Auch über die Arbeitsweise der Operationen ist nichts weiter ausgesagt als ihre Stelligkeit und ihr Ergebnis. Ob das +-Symbol der Arbeitsweise der Summenoperation entspricht, wird hier nicht festgelegt - dies wäre auch völlig unmöglich, da nichteinmal bekannt ist, ob die Operation auf den natürlichen Zahlen arbeitet. Derartige Zuordnungen fallen in den Bereich der Semantik. Eine um die Semantik erweiterte Spezifikation könnte daher folgendermaßen aussehen:
Simple Integer /* reine Syntax */ Sorten int Operationen empty: -> int + : int x int -> int - : int x int -> int /* Zuordnung einer Semantik */ Mengen int = IN Funktionen empty = {} + : int x int entspreche der Summe zweier Zahlen aus IN - : int x int entspreche der arithmetischen Differenz zweier Zahlen aus IN End Simple Integer
Damit wird allerdings der Bereich einer Signatur bereits überschritten. Diese Spezifikation würde man vielmehr als Algebra bezeichnen. Die Spezifikation kommt auf diese Weise jedoch dem programmiersprachlichen Verständnis des Begriffes Datentyp näher, dem sich ein Großteil des restlichen Artikels widmet.
Datentypen werden in der Programmierung verwendet, um Speicherbereichen eine konkrete Semantik zuzuweisen. Diese Speicherbereiche werden Variablen oder Konstanten genannt. Die Datentypen ermöglichen es einem Compiler oder Laufzeitumgebung, die Typverträglichkeit der vom Programmierer angegebenen Operationen zu überprüfen. Unzulässige Operationen werden zum Teil bereits beim Compilieren erkannt, so dass beispielsweise die Division einer Zeichenkette ‚HANS’ durch die Zahl ‚5’, was nicht sinnvoll und in üblichen Programmiersprachen undefiniert ist, verhindert wird.
Man unterscheidet elementare, zusammengesetzte und abstrakte Datentypen.
Ordinale Datentypen sind dadurch gekennzeichnet, dass ihrem Wert eine eindeutige Ordnungsnummer zugeordnet ist, das heißt jeder außer dem ersten Wert besitzt genau einen direkten Vorgänger und jeder außer dem letzten Wert besitzt genau einen direkten Nachfolger (geordnete Menge). Ordinale Datentypen sind abzählbar und u.a.:
Nichtordinale Datentypen sind dadurch gekennzeichnet, dass ihre Werte keine eindeutigen Vorgänger bzw. Nachfolger besitzen. Nichtordinale Datentypen sind u.a.:
Eine Besonderheit sind Zeiger, dessen wirklicher Wertebereich in der Regel anonym bleibt, da es 'nur' eine Referenz auf einen anderen beliebigen Datentyp ist. Je nach referenziertem Typ werden Zeiger auf bestimmte Elemente gesondert benannt, wie beispielsweise Zeiger auf Dateien, Drucker oder Pipes.
Als Abstrakte Datentypen bezeichnet man in der Informatik spezielle Datentypen, deren Operationen genau spezifiziert sind, die jedoch im Gegensatz zu den elementaren und zusammengesetzten Datentypen nicht an einen konkreten Wertebereich gebunden sind. Die Bindung an den Wertebereich findet erst durch die konkrete Ausprägung des abstrakten Datentypen statt.
Auch bei den abstrakten Datentypen ist die Abgrenzung zu den Datenstrukturen schwierig, da die Datentypen je nachdem, ob der Schwerpunkt der Betrachtung auf den Daten oder auf den darauf definierten Operationen liegt, Datenstruktur oder Abstrakter Datentyp genannt werden.
Einige Programmiersprachen, wie Ada oder Modula-2 unterstützen gezielt die Erstellung von abstrakten Datentypen.
Tipu de datu | Datový typ | Data type | Tipo de dato | Type | Adattípus | Tipo di dato | データ型 | Duomenų struktūra | Gegevenstype | Dynamiczne typowanie | Tipo de dado | Тип данных | Dátový typ | Podatkovni tip | Datatyp
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Datentyp".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world