Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Kriemhild Rehrig Geändert vor über 10 Jahren
1
FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003
2
Übersicht Kontext Motivation Vom Wert zur Darstellung Inkrementalität Transientenverwaltung Ausblick
3
Kontext erste Pretty Printer für LISP 1980: Derek Oppen: Pretty Printing generischer Algorithmus am Lehrstuhl Prof. Smolka: 1994: Bernhard Latz: Eine Benutzerschnittstelle für Oz Oz-Browser in Oz 1996: Konstantin Popov: Der Oz Browser 2000: Thorsten Brunklaus: Der Oz Inspektor -... Alice- bzw. Oz-Browser in Oz
4
Übersicht Kontext Motivation Vom Wert zur Darstellung Inkrementalität Transientenverwaltung Ausblick
5
Komplexität von Alice-Werten graphisches Browser-Tool – Implementierung in Alice Motivation [1, 2, 3, 4] [(1, 2), (3, 4), (5, 6)] horizontale Anordnung vertikale Anordnung Alice-Werte nicht selbstbeschreibend explizite Typinformation
6
Flexibilität / Interaktivität Anpassung an Benutzerpräferenzen benutzerdefinerte Typen Schnelligkeit Inkrementelles Update Ziele
7
Übersicht Kontext Motivation Vom Wert zur Darstellung Inkrementalität Transientenverwaltung Ausblick
8
layout draw Layout Zeichnen create Erzeugung interner Darstellung inspectBrowser-Ausgabe Vom Wert zur Darstellung (Wert, Typ)
9
Abstrakte Beschreibung doc := simple | doc 1 ^... ^doc n | #[doc 1,..., doc n ] create: value * type doc
10
Beispiel Wert (1, 2) #[ ] ^ ^ ( ) 2 1, Baumstruktur
11
strukturelle vs. abstrakte Typen strukturelle Typenabstrakte Typen create-Funktionalität einstufige Transformations- funktionen Registrierung !
12
Typregistrierung doc := simple | doc 1 ^... ^ doc n | #[doc 1,..., doc n ] doc = doc | value * type register: typename * (value * type doc) unit createDoc
13
Beispiel #[(1, 2), (3, 4)] register(vector, createVector) register(int, createInt) (int * int) vector
14
Beispiel #[ ] ^ ^ #[ ], (1, 2), int * int (3, 4), int * int #[(1, 2), (3, 4)], (int * int) vector createVector
15
Beispiel #[(1, 2), (3, 4)], (int * int) vector doc (1, 2), int * int (3, 4), int * int createVector
16
Beispiel #[(1, 2), (3, 4)], (int * int) vector doc (1, 2), int * int (3, 4), int * int doc 4, int 3, int 2, int 1, int create createVector
17
Beispiel #[(1, 2), (3, 4)], (int * int) vector doc (1, 2), int * int (3, 4), int * int doc 4, int 3, int 2, int 1, int doc createInt create createVector
18
Filter (1) Eingrenzung des Darstellungsbereichs doc := simple | doc 1 ^... ^ doc n | #[doc 1,....., doc n ] | limit
19
Ausblenden von Teilbäumen außerhalb des Darstellungsbereichs (vom Benutzer einstellbar) Breitenlimit Tiefenlimit Filter (2)
20
simple : atomare Werte doc 1 ^ doc 2 ^ doc 3 : Konkatenation ZXY A #[ doc 1, doc 2, doc 3 ] : Akkumulation nur simples nicht nur simples Layout ZXY X Y Z limit:
21
Übersicht Kontext Motivation Vom Wert zur Darstellung Inkrementalität Transientenverwaltung Ausblick
22
Inkrementalität der Darstellung Benutzer will Teilbaum verändern
23
Inkrementalität der Darstellung neue Konstruktion, Layout, Zeichnen neues Layout, Zeichnen Unterbäume verschieben
24
Übersicht Kontext Motivation Vom Wert zur Darstellung Inkrementalität Transientenverwaltung Ausblick
25
Transientenverwaltung (1) N1 future (1) Wächter future-Wert[ N1 ]
26
Transientenverwaltung (2) N1 N2 future (1) (2) Wächter future-WertN2 :: [ N1 ]
27
Transientenverwaltung (3) XX future wurde Wert X zugewiesen Wächter future-Wert[ N2, N1 ]
28
Übersicht Kontext Motivation Vom Wert zur Darstellung Inkrementalität Transientenverwaltung Ausblick
29
Benutzung neuer Gtk-Schnittstelle in Alice automatische Typreflektion nur Wertübergabe an inspect-Funktion
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.