29
FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Embed Size (px)

Citation preview

Page 1: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

FoPra-Vortrag von

Bernadette Blum und Marvin Schiller

03.04.2003

Page 2: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Übersicht

Kontext

Motivation

Vom Wert zur Darstellung

Inkrementalität

Transientenverwaltung

Ausblick

Page 3: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

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

Page 4: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Übersicht

Kontext

Motivation

Vom Wert zur Darstellung

Inkrementalität

Transientenverwaltung

Ausblick

Page 5: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

• 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

Page 6: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Flexibilität / Interaktivität

Anpassung an Benutzerpräferenzen

benutzerdefinerte Typen

Schnelligkeit

Inkrementelles Update

Ziele

Page 7: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Übersicht

Kontext

Motivation

Vom Wert zur Darstellung

Inkrementalität

Transientenverwaltung

Ausblick

Page 8: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

layout

draw

Layout

Zeichnen

create Erzeugung interner Darstellung

inspect

Browser-Ausgabe

Vom Wert zur Darstellung

(Wert, Typ)

Page 9: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Abstrakte Beschreibung

doc := simple | doc1 ^ ... ^docn

| #[doc1, ... , docn ]

create: value * type doc

Page 10: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Beispiel

Wert(1, 2)

#[ ]

^

^

“(“ “)“

“2“

“1“ “,“

Baumstruktur

Page 11: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

strukturelle vs. abstrakte Typen

strukturelle Typen abstrakte Typen

create-Funktionalität einstufigeTransformations-

funktionen

Registrierung !

Page 12: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Typregistrierung

doc := simple

| doc1 ^ ... ^ docn

| #[doc1, ... , docn ]

doc‘ = doc | value * type

register: typename * (value * type doc‘) unit

createDoc‘

Page 13: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Beispiel

#[(1, 2), (3, 4)]

register(vector, createVector)register(int, createInt)

(int * int) vector

Page 14: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Beispiel

#[ ]

^

^

“#[“ “]“

“,“(1, 2),

int * int

(3, 4),int * int

#[(1, 2), (3, 4)], (int * int) vector

createVector

Page 15: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Beispiel

#[(1, 2), (3, 4)], (int * int) vector

doc‘

(1, 2),int * int

(3, 4),int * int

createVector

Page 16: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Beispiel

#[(1, 2), (3, 4)], (int * int) vector

doc‘

(1, 2),int * int

(3, 4),int * int

doc‘

doc‘ doc‘

4,int

3,int

2,int

1,int

create

createVector

Page 17: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Beispiel

#[(1, 2), (3, 4)], (int * int) vector

doc‘

(1, 2),int * int

(3, 4),int * int

doc‘

doc‘ doc‘

4,int

3,int

2,int

1,int

doc

doc doc

docdocdoc doc

createInt

create

createVector

Page 18: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Filter (1)

Eingrenzung des Darstellungsbereichs

doc := simple

| doc1 ^ ... ^ docn

| #[doc1,....., docn ]

| limit

Page 19: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Ausblenden von Teilbäumen außerhalb des Darstellungsbereichs (vom Benutzer einstellbar)

Breitenlimit

Tiefenlimit

Filter (2)

Page 20: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

simple : atomare Werte

doc1 ^ doc2 ^ doc3 : Konkatenation ZX Y

A

#[ doc1 , doc2 , doc3 ] : Akkumulation

• nur simples

• nicht nur simples

Layout

ZX Y

X

Y

Z

limit:

Page 21: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Übersicht

Kontext

Motivation

Vom Wert zur Darstellung

Inkrementalität

Transientenverwaltung

Ausblick

Page 22: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Inkrementalität der Darstellung

Benutzer will Teilbaum verändern

Page 23: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Inkrementalität der Darstellung

neue Konstruktion,Layout,Zeichnen

neues Layout, Zeichnen

Unterbäume verschieben

Page 24: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Übersicht

Kontext

Motivation

Vom Wert zur Darstellung

Inkrementalität

Transientenverwaltung

Ausblick

Page 25: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Transientenverwaltung (1)

N1

future

(1)

(1)Wächter future-Wert [ N1 ]

Page 26: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Transientenverwaltung (2)

N1

N2

future

(1) (2)

(2)Wächter future-Wert N2 :: [ N1 ]

Page 27: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Transientenverwaltung (3)

X

X

future wurde Wert X zugewiesen

Wächter future-Wert [ N2 , N1 ]

Page 28: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Übersicht

Kontext

Motivation

Vom Wert zur Darstellung

Inkrementalität

Transientenverwaltung

Ausblick

Page 29: FoPra-Vortrag von Bernadette Blum und Marvin Schiller 03.04.2003

Ausblick

Benutzung neuer Gtk-Schnittstelle in Alice

automatische Typreflektion

nur Wertübergabe an inspect-Funktion