Komprehension: Unterschied zwischen den Versionen

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Zeile 68: Zeile 68:
Informationstechnische Systeme leben dagegen vom Zeitbegriff. Ein [[Programm (Informatik)|Programm]] befindet sich zum Startzeitpunkt in einem
Informationstechnische Systeme leben dagegen vom Zeitbegriff. Ein [[Programm (Informatik)|Programm]] befindet sich zum Startzeitpunkt in einem
bestimmten Zustand und führt nacheinander bestimmte [[Anweisung]]en aus, die das Programm jeweils in einen neuen Zustand überführen. (Die Turinmaschine
bestimmten Zustand und führt nacheinander bestimmte [[Anweisung]]en aus, die das Programm jeweils in einen neuen Zustand überführen. (Die Turinmaschine
beschreibt dieses Verhalten mit Hilfe mathematischer Hilfsmittel.)
beschreibt dieses Verhalten mittels mathematischer Prinzipien.)


Für mathematische Theorien reicht es daher üblicherweise, die Elementbeziehung jeweils als eine [[Relation]] auf den Universen der
Für mathematische Theorien reicht es daher üblicherweise, die Elementbeziehung jeweils als eine [[Relation]] auf den Universen der

Version vom 4. Juli 2016, 19:58 Uhr

Dieser Artikel wird derzeit von einem Autor gründlich bearbeitet. Die Inhalte sind daher evtl. noch inkonsistent.

Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen nur teilweise:

Korrektheit: 2
(teilweise überprüft)
Umfang: 2
(wichtige Fakten fehlen)
Quellenangaben: 2
(wichtige Quellen fehlen)
Quellenarten: 5
(ausgezeichnet)
Konformität: 5
(ausgezeichnet)

Das Zusammenfassen von Objekten zu neuen Objekten ist ein fundamentales Prinzip der Mathematik sowie der Informatik.

In der Mengenlehre werden Objekte mit Hilfe der Elementbeziehung zu Mengen und Klassen zusammengefasst. Es ist möglich, mathematische Theorien ausschließlich mit Hilfe von Klassen und der Elementbeziehung zu formalisieren (z. B. mittels der klassenlogischen Sprache LЄ von Gulbrecht, Oberschelp und Todt[1]). Die Tatsache, daß alle mathematischen Begriff auf mengentheoretische Begriffe zurückgeführt werden können, hat einige Autoren sogar zu der Behauptung veranlaßt, die gesamte Mathematik sei letztendlich mit der Mengenlehre identisch.[2]

Aber auch in der Informatik ist das Zusammenfassen von Objekten zu komplexeren Objekte von zentraler Bedeutung: Jede höhere Programmiersprache stellt komplexe Datenstrukturen – wie Tupeln, Listen, Bäumen etc. – bereit, um Daten verwalten zu können.[3]

Um das Zusammenfassen von Objekten zu komplexen Objekten formalisieren zu können, benötigt man drei Begriffe:

  • Container: Das sind Objekte, die Objekte als Elemente enthalten können.
  • Individuen: Das sind Objekte, die in Objekten als Elemente enthalten sein können.
  • Elementbeziehung: Diese setzt Individuen und Container in Beziehung zueinander.

Der Begriff Container wurde – in Ermangelung eines gebräuchlicheren Terminus – der C++-Standardbibliothek STL entlehnt. Die in diesem Wiki verwendet Definition des Begriffs ist allerdings deutlich allgemeiner als die STL-Definition (man vergleiche die beiden nachfolgenden Definitionen). Der Begriff Individuum ist etwas allgemeiner als der von Cantor geprägte Begriff Element[4]. Er geht auf Quine zurück und wird von Gulbrecht, Oberschelp, Todt bei der Definition diverser Klassenlogiken verwendet.[5][1].

Definition (C++-Standardbibliothek STL)[6]

Container dienen dazu, eine Menge von Objekten eines bestimmten Typs zu verwalten. [...]

Die Container werden [...] in sequentielle und assoziative Container unterteilt:

  • Sequentielle Container sind geordnete Mengen, in denen jedes Element eine bestimmte Position besitzt, die durch den Zeitpunkt und den Ort des Einfügens bestimmt wird. [...]
  • Assoziative Container sind dagegen sortierten Mengen, bei denen die Position der Elemente durch ein Sortierkriterium bestimmt sind.

Definitionen (Kowarschick (Glossarwiki))

Es sei $U$ ein Universum (Universe of Discourse) einer mathematischen Theorie oder eines informationstechnischen Systems. Die Mitglieder von $U$ heißen Objekte.

Zwischen Objekten können so genannte Elementbeziehungen bestehen. Die Objekte können hinsichtlich einer gegebenen Elementbeziehung $\epsilon$ folgendermaßen klassifiziert werden:

  • Ein $\epsilon$-Container ist ein Objekt, das Elemente (gemäß der gegebenen Beziehung $\epsilon$) enhalten kann.
  • Ein leerer $\epsilon$-Container ist ein Objekt, dass zwar als $\epsilon$-Container klassifiziert wird, aber kein Element enhalten kann.
  • Ein $\epsilon$-Individuum ist ein Objekt, das Element eines $\epsilon$-Containers sein kann.
  • Ein Objekt, das sowohl $\epsilon$-Individuum als auch $\epsilon$-Container ist, heißt $\epsilon$-Container-Individuum.
  • Ein $\epsilon$-Container, der kein $\epsilon$-Individuum ist, heißt purer $\epsilon$-Container.
  • Ein $\epsilon$-Individuum, das kein $\epsilon$-Container ist, heißt $\epsilon$-Urelement.
  • Ein Objekt das weder ist, heißt $\epsilon$-unerreichbar.

Wenn klar ist, welche Elementbeziehung gemeint ist, wird i. Allg. der Zusatz „$\epsilon$-“ bei den obigen Begriffen nicht geschrieben.

Unterschied zwischen mathematischen und informatiostechnischen Theorien

Mathematische Theorien beschreiben meist ein Bündel von statischen Welten, die irgendwelche gemeinsame Eigenschaften haben. Diese Welten werden durch sogenannte Modelle beschrieben, die gemeinsamen Eigenschaften durch sogenannte Axiome, deren Gültigkeit in allen betrachteten Welten als gegeben angesehen wird.[7] Zeitliche Aspekte werden in mathematischen Theorien eher selten betrachtet. (Es gibt allerdings Ausnahmen, wie z. B. die Temporallogik oder die Turingmaschine.)

Informationstechnische Systeme leben dagegen vom Zeitbegriff. Ein Programm befindet sich zum Startzeitpunkt in einem bestimmten Zustand und führt nacheinander bestimmte Anweisungen aus, die das Programm jeweils in einen neuen Zustand überführen. (Die Turinmaschine beschreibt dieses Verhalten mittels mathematischer Prinzipien.)

Für mathematische Theorien reicht es daher üblicherweise, die Elementbeziehung jeweils als eine Relation auf den Universen der betrachteten Welten zu definieren, die jeweils bestimmte Bedingungen erfüllen muss, um den gegebenen Axiomen zu genügen. Für informationstechnische Systeme muss es dagegen möglich sein, im Laufe der Zeit Container zu erzeugen, zu durchsuchen, zu modifizieren und zu löschen, da hier die Welten nicht gleichzeitig, sondern nacheinander betrachtet werden. Man benötigt für die Handhabung von Containern also zusätzlich sogenannte CRUD-Befehle (create, read, update, delete).

Container in der Mathematik

Die wichtigsten Container in mathematischen Theorien sind: Mengen, Klassen, geordnete Paare, Tupel.

TO BE DONE

Urelemente: Man geht von einem Bereich von Objekten mit einer Element-Beziehung $\epsilon$ ais. Es wird ein (eventuell leerer) Teilbereich aller Objekte ausgezeichnet. Die ihm angehörenden Objekte heißen Urelemente. Für alle Urelemente $a$ gilt, es gibt kein $d$ mit $d \,\epsilon\, a$ [8]

Üblicherweise ist ein leerer Container ein Container-Indivduum. Es sind aber auch Situationen denkbar, in denen es sich um einen puren Container handelt.

In mathematischen Theorien gibt es meist genau einen leeren Container (die leere Menge), in informationstechnischen Systemen gibt es dagegen meist beliebig viele leere Container (Javascript: Mit {} – oder genauer Object.create(null) – wird jedesmal ein neues leeres Object erstellt).

Beispiele für Container[6]

Sequentielle Container in STL

Assoziative Container in STL

Container-Adapter in STL

Container-Adapter bilden funamentale Container auf spezielle Anforderungen ab.

TO BE DONE

Geordnete Paare sind per Definitionem Container, da sie genau zwei Objekte als Elemente enthalten, die so genannten Paarelemente. Auch die Verallgemeinerung der geordneten Paare, die Tupel sind Container. Ein $n$-Tupel enthält genau $n$ Elemente – die so genannten Tupelelemente – in einer bestimmten Reihenfolge.

In der Mengenlehre gibt es diverse weitere Arten von Objekten, die entweder als Container und/oder als Elemente auftreten können:

  • Klassen sind Container: Sie können Elemente enthalten (und zwar Urelemente und Mengen).
  • Urelemente können in Klassen als Elemente enthalten sein, können selbst aber keine Elemente enthalten.
  • Mengen sind spezielle Klassen (können also Elemente enthalten); sie können auch in Klassen als Elemente enthalten sein.
  • Unmengen sind spezielle Klassen (können also Elemente enthalten); sie sind aber so umfangreich, dass sie nicht in irgendwelchen Klassen als Elemente enthalten sein können.

TO BE DONE

Gulbrecht, Oberschelp, Todt: Individuen, reale und virtuelle Objekte

Typische Urelemente sind Zahlen, Zeichenketten, Boolesche Werte etc. Üblicherweise verzichtet man in der Mathematik heutzutage auf die Definition von speziellen Urelementen. Es reicht aus, wenn man die leere Menge, d. h. die einzige Klasse, die keine Elemente enthält, als Urelement zur Verfügung hat. Alle andere Urelemente können dann durch spezielle Klassen (d. h. Container) repräsentiert werden (die Zahl „Null“ beispielsweise durch die leere Menge $\{\}$, die Zahl „Eins“ durch die einelementige Menge $\{\{\}\}$ etc.). Es gibt aber auch Ausnahmen, wie z. B. die Sprache LISP, in der – vor allem aus Performanz-Gründen – nicht auf Urelemente verzichtet wird. In LISP werden die Urelemente „Atome“ genannt.[9]

Auch bei Paaren und deren Verallgemeinerung, den Tupeln handelt es sich um Container, die Elemente enthalten, die so genannten Paar- oder Tupelelemente. Zwischen Klassen und Klassenpaaren gibt es also einen wichtigen Unterschied: Unmengen können keine Elemente von irgendwelchen Klassen sein, wohl aber (Paar-)Elemente von Klassenpaaren. Das heißt, mit Hilfe Klassenpaaren (und Klassentupeln) kann man auch Unmengen zu größeren Einheiten zusammenfassen. Mit Mengenpaaren geht dies nicht.

Allerdings gibt es nicht nur Mengen- und Klassenpaare. Ein geordnetes Paar kann – in speziellen formalen Systemen – an Stelle von Klassen und Urelementen auch andere Arten von Elementen enthalten. Gottlob Frege erlaubt beispielsweise „Gegenstände“, „Funktionen“ und „Werthverläufe“ als Elemente.[10] John von Neumann erlaubt „Argumente“ (und damit insbesondere auch spezielle Funktionen, die sogenannten „Argument-Funktionen“)[11] und in LISP sind nur Atome (Urelemente) und Paare als Elemente erlaubt.[9]

Quellen

  1. 1,0 1,1
  2. , S. 9
  3. Sebesta (2016): Robert W. Sebesta; Concepts of Programming Languages; Auflage: 11; Verlag: Prentice Hall; ISBN: 978-1292100555, 978-0133943023; 2016; Quellengüte: 5 (Buch)
  4. Cantor (1895): Georg Cantor; Beiträge zur Begründung der transfiniten Mengenlehre; in: Mathematische Annalen; Band: 46; Nummer: 4; Seite(n): 481 – 512; Verlag: B. G. Teubner Verlag; Adresse: Leipzig; ISSN: 00255831 (Papier), 14321807 (Online); Web-Link 0, Web-Link 1, Web-Link 2, Web-Link 3; 1895; Quellengüte: 5 (Artikel)
  5. Quine (1963): Willard Van Orman Quine; Set Theory and its Logic; Verlag: Harvard University Press; Adresse: Cambridge; 1963; Quellengüte: 5 (Buch)
  6. 6,0 6,1 Josuttis (1996): Nicolai Josuttis; Die C++-Standardbibliothek – Eine detaillierte Einführung in die vollständige ANIS/ISO-Schnittstelle; Verlag: Digital Press; Adresse: Woburn; ISBN: 1-55558-041-6; Web-Link 0, Web-Link 1; 1990 (Buch), Kapitel 5.1 und 5.2
  7. vgl.
  8. Felscher (1978): W. Felscher; Naive Mengen und abstrakte Zahlen; Band: 1; Verlag: BI-Wissenschaftsverlag; Adresse: Mannheim; ISBN: 3-411-01538-1; 1978; Quellengüte: 5 (Buch)
  9. 9,0 9,1 McCarthy (1960): John McCarthy; Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I; in: Communications of the ACM; Band: 3; Nummer: 4; Seite(n): 184-195; Verlag: Association for Computing Machinery; Adresse: New York; Web-Link 0, Web-Link 1; 1960; Quellengüte: 5 (Artikel)
  10. Frege (1893): Gottlob Frege; Grundgesetze der Arithmetik; Band: I; Verlag: Verlag Hermann Pohle; Adresse: Jena; Web-Link 0, Web-Link 1, Web-Link 2, Web-Link 3; 1893; Quellengüte: 5 (Buch)
  11. Neumann (1925): John von Neumann; Eine Axiomatisierung der Mengenlehre; in: Journal für die reine und angewandte Mathematik; Band: 154; Seite(n): 219-240; ISSN: 0075-4102, 1435-5345; Web-Link 0, Web-Link 1; 1925; Quellengüte: 5 (Artikel)

Siehe auch