\contentsline {chapter}{\numberline {1.}Einf" uhrung und " Uberblick}{1} \contentsline {section}{\numberline {1.1}Ausgangspunkt der Arbeit und Problemstellung}{2} \contentsline {section}{\numberline {1.2}L\active@dq \dq@prtct{o@}sungsansatz und Gliederung der Arbeit}{5} \contentsline {chapter}{\numberline {2.}Das Tycoon System}{7} \contentsline {section}{\numberline {2.1}Architektur des Tycoon Systems}{7} \contentsline {section}{\numberline {2.2}Das semantische Modell von TL}{10} \contentsline {subsection}{\numberline {2.2.1}Bindungen und Signaturen}{11} \contentsline {subsection}{\numberline {2.2.2}Benennung und Typisierung vordefinierter Werte und Funktionen}{11} \contentsline {subsection}{\numberline {2.2.3}Typhierarchien}{12} \contentsline {subsection}{\numberline {2.2.4}Struktur-- und Namens\active@dq \dq@prtct{a@}quivalenz}{13} \contentsline {chapter}{\numberline {3.}Dienste zur Datenvisualisierung}{15} \contentsline {section}{\numberline {3.1}Ziele der Visualisierung}{15} \contentsline {subsection}{\numberline {3.1.1}Zu visualisierende Informationen}{15} \contentsline {subsubsection}{Datenmodellabh\active@dq \dq@prtct{a@}ngige Programmiersprachen}{16} \contentsline {subsubsection}{Modellunabh\active@dq \dq@prtct{a@}ngige Datenbankprogrammiersprachen}{16} \contentsline {subsection}{\numberline {3.1.2}Funktionalit\active@dq \dq@prtct{a@}t}{17} \contentsline {subsubsection}{O$_2$}{18} \contentsline {subsubsection}{Napier88}{18} \contentsline {section}{\numberline {3.2}Visualisierungsaspekte}{19} \contentsline {subsection}{\numberline {3.2.1}Grafische Benutzerschnittstelle}{19} \contentsline {subsubsection}{Externer versus interner Dienst}{20} \contentsline {subsubsection}{Portierbarkeit}{21} \contentsline {subsection}{\numberline {3.2.2}Visualisierung von Objekten}{21} \contentsline {subsection}{\numberline {3.2.3}Sichtfokussierte versus objektfokussierte Umgebungen}{22} \contentsline {section}{\numberline {3.3}Implementierungsaspekte}{23} \contentsline {subsection}{\numberline {3.3.1}Bedeutung einer dynamischen Typisierung}{23} \contentsline {subsection}{\numberline {3.3.2}Ausnutzung von Objektformaten auf Speicherebene}{24} \contentsline {subsection}{\numberline {3.3.3}Implementierung durch linguistische Reflektion}{24} \contentsline {subsubsection}{Charakterisierung von Reflektion}{25} \contentsline {subsubsection}{Reflektiver Ansatz}{26} \contentsline {section}{\numberline {3.4}Ansatz zur Datenvisualisierung im Tycoon System}{26} \contentsline {chapter}{\numberline {4.}Grafische Gestaltung der Daten-- und Funktionsvisualisierung}{28} \contentsline {section}{\numberline {4.1}Die grafische Klassenbibliothek StarView}{28} \contentsline {subsection}{\numberline {4.1.1}Die StarView Klassenhierarchie}{29} \contentsline {subsection}{\numberline {4.1.2}Ereignisbearbeitung}{31} \contentsline {subsection}{\numberline {4.1.3}Einbindung der Klassenbibliothek in das Tycoon System}{31} \contentsline {subsubsection}{Das StarView Gateway}{31} \contentsline {subsubsection}{Inkrementelle Entwicklung}{32} \contentsline {subsection}{\numberline {4.1.4}Erfahrungen mit der Einbindung}{33} \contentsline {section}{\numberline {4.2}Bildschirmrepr\active@dq \dq@prtct{a@}sentationen}{34} \contentsline {subsection}{\numberline {4.2.1}Rahmen f\active@dq \dq@prtct{u@}r visualisierte Objekte}{34} \contentsline {subsubsection}{Kopfzeile}{34} \contentsline {subsubsection}{Men\active@dq \dq@prtct{u@}s}{34} \contentsline {subsubsection}{Kn\active@dq \dq@prtct{o@}pfe}{35} \contentsline {subsection}{\numberline {4.2.2}Typen}{35} \contentsline {subsubsection}{Abstrakte Datentypen}{36} \contentsline {subsubsection}{Strukturierte Typen und Ausnahmetypen}{36} \contentsline {subsubsection}{Funktionstypen und Typoperatoren}{36} \contentsline {subsubsection}{Typoperatoranwendungen}{37} \contentsline {subsubsection}{Rekursive Typen}{37} \contentsline {subsection}{\numberline {4.2.3}Werte}{38} \contentsline {subsubsection}{Werte von Basistypen}{38} \contentsline {subsubsection}{Werte abstrakter Datentypen}{39} \contentsline {subsubsection}{Strukturierte Werte}{39} \contentsline {subsubsection}{Ausnahmewerte}{40} \contentsline {subsubsection}{Felder}{40} \contentsline {subsection}{\numberline {4.2.4}Funktionswerte}{40} \contentsline {chapter}{\numberline {5.}Dynamische Typisierung}{42} \contentsline {section}{\numberline {5.1}Laufzeittyprepr\active@dq \dq@prtct{a@}sentationen und automorphe Werte}{42} \contentsline {section}{\numberline {5.2}Anwendungen dynamischer Typisierung}{43} \contentsline {subsection}{\numberline {5.2.1}Meta--Level Operationen}{44} \contentsline {subsection}{\numberline {5.2.2}Strukturierte Ein-- und Ausgabe}{44} \contentsline {subsection}{\numberline {5.2.3}Generatoren}{45} \contentsline {subsection}{\numberline {5.2.4}Bindungen an entfernte Prozeduraufrufe}{46} \contentsline {subsection}{\numberline {5.2.5}Aufgaben dynamischer Typisierung}{46} \contentsline {section}{\numberline {5.3}Konzepte zur Realisierung dynamischer Typisierung}{47} \contentsline {subsection}{\numberline {5.3.1}Dynamische Typisierung in anderen Sprachen}{47} \contentsline {subsubsection}{Amber}{47} \contentsline {subsubsection}{CAML}{48} \contentsline {subsubsection}{Napier88}{49} \contentsline {subsubsection}{Ansatz von Abadi, Cardelli, Pierce und Plotkin}{49} \contentsline {subsubsection}{Zusammenfassung}{50} \contentsline {subsection}{\numberline {5.3.2}Dynamische Typisierung und Polymorphismus}{50} \contentsline {subsection}{\numberline {5.3.3}Dynamische Typisierung abstrakter Datentypen}{51} \contentsline {section}{\numberline {5.4}Realisierung dynamischer Typisierung in TL}{52} \contentsline {subsection}{\numberline {5.4.1}Urspr" unglicher Ansatz}{52} \contentsline {subsection}{\numberline {5.4.2}Spracherweiterungen in TL}{54} \contentsline {subsection}{\numberline {5.4.3}Programmierschnittstellen}{55} \contentsline {subsubsection}{Schnittstelle `TypeRep'}{55} \contentsline {subsubsection}{Schnittstelle `Dynamic'}{56} \contentsline {subsection}{\numberline {5.4.4}Erweiterungen des TL Compilers}{57} \contentsline {subsubsection}{Generierung von Laufzeittyprepr\active@dq \dq@prtct{a@}sentationen}{57} \contentsline {subsubsection}{Generierung automorpher Werte}{60} \contentsline {subsubsection}{Generierung der Projektion}{61} \contentsline {subsubsection}{Polymorphe Typvariablen}{62} \contentsline {chapter}{\numberline {6.}Linguistische Reflektion zur Unterst\active@dq \dq@prtct{u@}tzung der Visualisierung}{64} \contentsline {section}{\numberline {6.1}Laufzeittyprepr\active@dq \dq@prtct{a@}sentationen f\active@dq \dq@prtct{u@}r die globalen Bindungen einer Funktion}{64} \contentsline {subsection}{\numberline {6.1.1}Funktionsabschlu\active@dq \dq@prtct{s@}}{64} \contentsline {subsection}{\numberline {6.1.2}Erweiterter Funktionsabschlu\active@dq \dq@prtct{s@}}{66} \contentsline {subsection}{\numberline {6.1.3}Generierter Programmkode}{68} \contentsline {subsection}{\numberline {6.1.4}Erweiterungen des Typ\active@dq \dq@prtct{u@}berpr\active@dq \dq@prtct{u@}fers}{70} \contentsline {subsection}{\numberline {6.1.5}Praktische Erfahrungen mit dem Ansatz}{70} \contentsline {section}{\numberline {6.2}Persistente Threads}{71} \contentsline {subsection}{\numberline {6.2.1}Interne Darstellung}{72} \contentsline {subsection}{\numberline {6.2.2}Generierter Programmkode}{72} \contentsline {chapter}{\numberline {7.}Realisierung der Daten-- und Funktionsvisualisierung}{77} \contentsline {section}{\numberline {7.1}Die Bibliothek zur Daten-- und Funktionsvisualisierung}{77} \contentsline {section}{\numberline {7.2}Strukturanalyse}{80} \contentsline {section}{\numberline {7.3}Abstraktes Datenstrukturmodell}{81} \contentsline {subsection}{\numberline {7.3.1}Protokoll}{81} \contentsline {subsection}{\numberline {7.3.2}Zugriffsfunktionen}{83} \contentsline {section}{\numberline {7.4}Unterst\active@dq \dq@prtct{u@}tzende Schnittstellen}{84} \contentsline {subsection}{\numberline {7.4.1}Allgemeine unterst\active@dq \dq@prtct{u@}tzende Schnittstellen}{84} \contentsline {subsection}{\numberline {7.4.2}Verwaltung der visualisierten Objekte}{84} \contentsline {subsection}{\numberline {7.4.3}Generierung der Bildschirmrepr\active@dq \dq@prtct{a@}sentation}{85} \contentsline {subsection}{\numberline {7.4.4}Unterst\active@dq \dq@prtct{u@}tzung des Datenaustauschs}{86} \contentsline {subsubsection}{Datenaustausch \active@dq \dq@prtct{u@}ber das Klemmbrett}{86} \contentsline {subsubsection}{Datenaustausch per Drag$\&$Drop}{86} \contentsline {section}{\numberline {7.5}Visualisierungsschnittstelle}{87} \contentsline {subsection}{\numberline {7.5.1}Typvisualisierung}{87} \contentsline {subsection}{\numberline {7.5.2}Wertvisualisierung}{88} \contentsline {subsubsection}{Eingebettete Bildschirmrepr\active@dq \dq@prtct{a@}sentationen}{88} \contentsline {subsubsection}{Manipulation von Werten durch Datenaustausch}{88} \contentsline {subsection}{\numberline {7.5.3}Funktionsvisualisierung}{89} \contentsline {subsubsection}{Interaktive Funktionsapplikation}{89} \contentsline {subsubsection}{Visualisierung globaler Bindungen}{90} \contentsline {subsubsection}{Visualisierung der verschiedenen Koderepr\active@dq \dq@prtct{a@}sentationen}{90} \contentsline {section}{\numberline {7.6}Schnittstelle zum Anwendungsprogramm}{91} \contentsline {chapter}{\numberline {8.}Zusammenfassung und Ausblick}{93} \contentsline {section}{\numberline {8.1}Dynamische Typisierung}{93} \contentsline {section}{\numberline {8.2}\active@dq \dq@prtct{U@}bersetzungszeitreflektive Unterst\active@dq \dq@prtct{u@}tzung der Visualisierung}{94} \contentsline {section}{\numberline {8.3}Datenvisualisierung und Datenmanipulation}{94} \contentsline {section}{\numberline {8.4}Ausblick}{95} \contentsline {chapter}{\numberline {A.}Schnittstellen des Compilers zur Implementierung dynamischen Typisierung}{98} \contentsline {section}{\numberline {A.1}Schnittstelle 'TLDynamicImpl'}{98} \contentsline {section}{\numberline {A.2}Schnittstelle 'TLDynamic'}{100} \contentsline {section}{\numberline {A.3}Schnittstelle 'TLDynEnv'}{100} \contentsline {chapter}{\numberline {B.}Reflektive Schnittstellen}{101} \contentsline {section}{\numberline {B.1}Schnittstelle 'TypeRep'}{101} \contentsline {section}{\numberline {B.2}Schnittstelle 'Dynamic'}{104} \contentsline {section}{\numberline {B.3}Schnittstelle 'Closure'}{107} \contentsline {chapter}{\numberline {C.}Ausgew\active@dq \dq@prtct{a@}hlte Schnittstellen der generischen Daten-- und Funktionsvisualisierung}{108} \contentsline {section}{\numberline {C.1}Schnittstelle 'BrowserExchange'}{108} \contentsline {section}{\numberline {C.2}Schnittstelle 'Browser'}{109}